Volley, AsyncTask , Retrofit
1. AsyncTask
* AsyncTask là một lớp trừu tượng được cung cấp bởi Android, giúp chúng ta sử dụng các thread UI đúng. Lớp này cho phép chúng tôi thực hiện các hoạt động dài / nền và hiển thị kết quả của nó trên thread UI mà không cần phải thao tác đề.
* AsyncTask là một lớp trừu tượng được cung cấp bởi Android, giúp chúng ta sử dụng các thread UI đúng. Lớp này cho phép chúng tôi thực hiện các hoạt động dài / nền và hiển thị kết quả của nó trên thread UI mà không cần phải thao tác đề.
* Class AsyncTask có các phương thức chính như sau:
- onPreExecute
Là phương thức được chạy đầu tiên khi task được bắt đầu. Phương thức này làm việc trên UI Thread.
- doInBackground
Là phương thức chạy background thực hiện tác vụ nào đó. Phương thức này chạy trên Background Thread vì thế chúng ta không được update giá trị lên UI trong phương thức này.
- onPostExecute
Là phương thức được gọi ngay sau khi phương thức doInBackground kết thúc. Đối số của phương thức này chính là kết quả return từ phương thức doInBackground. Phương thức này làm việc trên UI Thread.
Mô hình làm việc.

Ngoài 3 phương thức chính trên còn có 2 phương thức nữa đó là:
publishProgress: Được sử dụng trong phương thức doInBackground để cập nhật quá trình làm việc lúc runtime và gọi phương thức onProgressUpdate trên UI Thread để update giá trị trong khi doInBackground vẫn làm việc.
- onProgressUpdate: Update giá trị lên UI, được gọi nếu phương thức publishProgress được gọi trong phương thức doInBackground. Phương thức này làm việc trên UI Thread.
Ba đối số mà khi chúng ta tạo class extends từ AsyncTask là:
* AsyncTask<Params, Progress, Result>
- Param: Là kiểu của đối số được truyền vào phương thức doInBackground.
- Progress: Là kiểu biến dùng để update giá trị trong quá tình doInBackground chạy. Giá trị này được truyền vào phương thức onProgressUpdate.
- Result: Là kiểu trả về của phương thức doInBackground và là kiểu của đối số của phương thức onPostExcute.
2. Volley
Volley là một Networking Library để quản lý các request Network và lưu trữ những response không cần các Developer viết nhiều code như trước . Các tools bên trong Volley cho phép cùng một lúc thưc hiện nhiều request trên các thread khác nhau với các mức độ ưu tiên (priority ) khác nhau. Tất cả request được thực hiện và lưu trữ trong bộ nhớ cache giúp co việc reload lại dữ nhiều nhanh hơn. Toàn bộ response được lưu trong memory vậy nên nó không phải là 1 ý tưởng hay cho việc tải về những dữ liệu lớn như music hay movies. Nhưng nó lại là tuyệt với với những loại dữ liệu như JSON, Image, String … Volley có rất nhiều tính năng, một vài trong số chúng là:- Xử lý request theo hàng đợi và độ ưu tiên
- Hiệu quả cho việc sử dụng cache và quả lý bộ nhớ
- Dễ dàng trong việc mở rộng và custom thư viện khi cần
- Có khả năng cancel request
- Những class request có trong thư viện Volley bao gồm : jsonObjectRequest, jsonArrayRequest, StringRequest, ImageLoader kết với các constructor đi kèm như : POST, GET, DELETE, PUT, COPY,…
- Thay vì việc viết 1 class kế thừa từ Asyntask để load dữ liệu thì ta nên thay thế nó bằng Volley sẽ giảm một nửa thời gian load dữ liệu từ webservice.
3. Retrofit
Retrofit là một Rest Client cho Android và Java và được tạo ra bởi Square. Họ làm cho việc nhận và tải lên JSON (hoặc dữ liệu khác) một cách khá dễ dàng tới một WebService dựa trên mô hình REST.* Để làm việc với Retrofit bạn cần triển khai cơ bản 3 lớp:
- Model class to map JSON Data
- Interfaces để định nghĩa các API cho Webservice
- Retrofit.Builder Lớp để định nghĩa URL Endpoint cho các hoạt động liên quan tới Http
* Một số tính năng của Retrofit: Nguyên văn trên website của nó:
- URL parameter replacement and query parameter support (Cho phép chúng ta truyền vào các request param một cách rất đơn giản và tường minh hơn )
- Object conversion to request body (e.g., JSON, protocol buffers)(Convert 1 object(class) thành một request body dạng: JSON, ... )
- URL parameter replacement and query parameter support (Cho phép chúng ta truyền vào các request param một cách rất đơn giản và tường minh hơn )
- Object conversion to request body (e.g., JSON, protocol buffers)(Convert 1 object(class) thành một request body dạng: JSON, ... )
- Multipart request body and file upload(Hỗ trợ file upload)
4. So sánh với Volley, AsyncTask , Retrofit
- Retrofit và Volley có thời gian load giữ liệu nhanh hơn AsyncTask
- So với Volley, Retrofit trong mã REST API ngắn gọn và cung cấp tài liệu API tuyệt vời và có sự hỗ trợ tốt trong cộng đồng! Rất dễ dàng để thêm vào các dự án.
- Volley vs Retrofit, Volley có thể có tính năng phân tích hình ảnh, nhưng nó không thể chuyển đổi một đối tượng JSON trực tiếp vào một đối tượng (Object Plain Old Java) POJO. Mặt khác, Retrofit có thể tự động chuyển đổi một đối tượng JSON thành một POJO, nhưng lại thiếu phân tích hình ảnh.
- Qua hình ảnh có thể thấy Retrofit có thời gian sử lý dữ liệu nhanh hơn Volley, AsyncTask.
Nhận xét
Đăng nhận xét