Hướng dẫn sử dụng thư viện Volley trong Android

Volley được Google giới thiệu vào khoảng tháng 6/2013. Volley là một thư viện dùng để send và recieve response từ Server sử dụng giao thức HTTP.

Volley có các điểm nổi bật dưới đây:

  • Tự động lập lịch (scheduling) cho các request.
  • Caching Response.
  • Hỗ trợ set độ ưu tiên cho các request (priority).
  • Hỗ trợ nhiều kết quả trả về (String, JSONObject, JSONArray, Bitmap…)
  • Có thể huỷ Request.

Các class sử dụng trong Volley:

RequestQueue: Là hằng đợi giữ các Request.

Request: là lớp cơ sở của các Request trong Volley, chứa thông tin về request HTTP.

StringRequest: Kết thừa từ Request, là class đại diện cho request trả về String.

JSONObjectRequest: Là HTTP request có kết quả trả về là JSONObject.

JSONArrayRequest: Là HTTP request có kết quả trả về là JSONArray.

ImageRequest: Là HTTP request có kết quả trả về là Bitmap.

Ngoài ra chúng ta có thể tạo custom request. Nhưng trong phạm vi bài viết tôi không giới thiệu.

Các bạn cói thể xem video giới thiệu Volley tại Goolge IO/2013.

Dưới đây là mô hình làm việc của Volley:

Mô hình làm việc của Volley
Mô hình làm việc của Volley

Sử dụng thư viện Volley

Trước tiên chúng ta phải import thư viện này vào Android Studio. Copy và paste dòng dưới đây và dependencies trong file build.gradle của module app:

Nhấn Async Now để Android Studio download và nạp thư viện vào project.

Để sử dụng Volley chúng ta phải cấp quyền Internet trong AndroidManifest.xml như sau:

RequestQueue Volley

Việc sử dụng Volley rất đơn giản, các bạn chỉ cần tạo một RequestQueue bằng lệnh

Phương thức này về một RequestQueue. Khi đã có RequestQueue chúng ta chỉ cần các loại Request và add các request đó vào RequestQueue.

Chúng ta thấy rằng nếu tôi gọi Volley.newRequestQueue(context); n lần thì có n RequestQueue được tạo ra. Ứng dụng của tôi chỉ cần duy nhất một RequestQueue dử dụng cho toàn app (Activity, Fragment, Service…) Vì vậy, tôi sử dụng Singleton để thiết kết lớp VolleySingleton có nhiệm vụ quản lý RequestQueue như sau:

StringRequest Volley

GET StringRequest Volley:

POST StringRequest Volley:

Độ ưu tiên của Request:

Trong Volley, Request có thể mang các giá trị Priority như dưới đây:

Với các mức độ ưu tiên tăng dần. Và mặc định Request trong Volley có gía trị là NORMAL.

Để set giá trị ưu tiên cho Request các bạn phải Override lại phương thức getPriority.

Cách tạo request đối với JSONObjectRequest, JSONArrayObject, ImageRequest đều tương tự như với StringRequest. Contructor sẽ có những thành phần dưới đây:

  • Method POST, GET.
  • Contructor truyền vào url của request
  • Hai Listener là Response.Listener và Response.ErrorListener

JSONObjectRequest Volley

Request có response trả về là JSONObject.

Nếu Request thành công chúng ta có thể lấy ra đối tượng JSONObject trong phương thức onResponse. Ngược lại chúng ta sẽ có thông tin lỗi trong phương thức onErrorResponse.

JSONArrayRequest Volley

Tương tự như JSONObjectRequest nhưng JSONArrayRequest trả về một JSONArray nếu thành công trong phương thức onResponse.

ImageRequest Volley

ImageRequest trả về response là một bitmap nếu thành công. Ngược lại trả về lỗi trong phương thức onErrorResponse.

Add Request to RequestQueue Volley

Để tiến hành send request đến server chúng ta cần phải add những request vừa tạo ở trên vào RequestQueue.

Source code MainActivity.java

Kết quả khi chạy project:

Trong project, sử dụng phương thức POST StringRequest, để demo phương thức này mình đã code web service bằng PHP và MYSQL , trong android mình đã dùng Volley để parse json và hiển thị kết quả.

Trên đây tôi đã hướng dẫn các bạn cách sử dụng thư viện Volley để send và nhận response từ Server thông sử dụng giao thức HTTP. Hy vọng bài viết giúp ích cho tất cả các bạn trong học tập cũng như công việc.

Project on Githubhttps://github.com/trongcong/VolleyDemo

Tham khảo: http://eitguide.com/thao-tac-voi-network-trong-android-su-dung-thu-vien-volley

Gom Marker trong Android với Google Maps Android API – Google Maps Android Marker Clustering Utility Sử dụng SwipeRefreshLayout trong ứng dụng Android Hướng dẫn tạo Material Dialog Bottom Sheet Android Tạo context menu trong Android – ActionBar ActionMode.CallBack Example Retrofit và Volley thư viện nào tốt hơn Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Part 2 Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Part 1 Hàm chuyển đổi Timestamp thành Datetime trong Android và JavaScript Design Patterns là gì? Tạo Project Android theo mẫu Design Patterns(Part 2) Design Patterns là gì? Tạo Project Android theo mẫu Design Patterns(Part 1)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.