Mở đầu
Dạo gần đây có nhiều người hỏi mình học lập trình android ở đâu để học tất cả các framework mình sẽ hướng dẫn mỏi người ở đây
Để giảm thời gian phát triển một ứng dụng Android, mình thường sử dụng các thư viện Android mã nguồn mở có sẵn cho các phần Networking, UI, Dependency Injection (DI), Reactive Library… Có rất nhiều thư viện để lựa chọn nhưng tiêu chí của mình là đơn giản, dễ xài, performance tốt và đủ đáp ứng nhu cầu phát sinh trong việc phát triển ứng dụng Android.

Dưới đây là một số thư viện:


RxAndroid

Dạo gần đây khái niệm Reactive Programming khá phổ biển ở các blog, twitter hay Android Weekly, và RxAndroid là một trong những thư viện Reactive khá nổi tiếng trên Android.

Mình dần thay thế callback bằng RxAndroid. RxAndroid có phần map để transform data khá hay để custom lại những response từ backend trả về. Bên cạnh đó, observerOn hay subscribeOn giúp mình quy định việc mình thực thi trên thread nào hay khi trả về thì đẩy lên thread nào. RxAndroid còn rất nhiều chức năng thú vị khác mà mình cũng đang tìm hiểu.

Hơn nữa, RxAndroid với Retrofit khá tiện khi dùng chung.

Sử dụng RxAndroid cũng khá đơn giản:

retrofitService.getImage(url)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(bitmap -> myImageView.setImageBitmap(bitmap));
Retrofit

Đa số ứng dụng Android hiện nay đều đi kèm với một backend server nên một thư viện giúp hỗ trợ giao tiếp với server sẽ rất hữu ích. Retrofit là một trong những thư viện nổi tiếng trong việc hỗ trợ Netwoking.

Một số lý do mà mình dùng Retrofit cho Networking:

Performance tốt.
Dễ sử dụng.
Dùng chung được với RxAndroid.
Dưới đây là phần so sánh performance với Volley và AsyncTask:

Cú pháp thông dụng khi sử dụng thư viện Retrofit:

Định nghĩa API:
public interface GitHubService {
@GET("/users/{user}/repos")
List<Repo> listRepos(@path("user") String user);
}
Config cho Endpoint;
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoind("https://api.github.com/")
.build();

GitHubService service = restAdapter.create(GitHubService.class);
Gọi API:
List<Repo> repos = service.listRepos("octocat");
Butterknife

Butterknife là thư viện Android hỗ trợ Bind view và tự động cast đúng kiểu cho từng loại view. Giảm thiểu việc viết findViewId quá nhiều trong code.

Butterknife generate code nên sẽ không lo chuyện performance ở runtime.

Thường mình viết một BaseActivity cho nó extends từ AppCompatActivity rồi implement lại hàm setContentView rồi bỏ ButterKnife.bind(this) vào hàm này.

Ví dụ:
class ExampleActivity extends Activity {
@Bind(R.id.title) TextView title;
@Bind(R.id.subtitle) TextView subtitle;
@Bind(R.id.footer) TextView footer;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.bind(this);
// TODO Use fields...
}
}
Phần kết

Sử dụng thư viện Android giúp chúng ta tạo ra trải nghiệm người dùng tốt hơn. Cuối cùng, tất cả các thư viện thứ ba Android có các chức năng và mục đích sử dụng khác nhau. Sử dụng thư viện Android trong xây dựng ứng dụng Android là một cách tuyệt vời khi thêm mới một chức năng cho ứng dụng của bạn. Bằng cách này bạn có thể tiết kiêm thời gian phát triển ứng dụng. Bất kỳ thư viện liên quan tới thiết kế đều có thể tạo ra những cách mới để tương tác với ứng dụng của bạn.