EasyVolley的使用

EasyVolley

EasyVolley庫是Google Volley的改良版本,它簡化了請求參數處理,添加對文件的上傳下載的支持,其他相似庫,例如VolleyPlus等,它們是把要上傳及下載的東西,全部讀取到內存,然後再發送出去或保存到文件,這必然會出現內存損耗過多的問題,如果是大文件,手機必然處理不過來。

用法


普通請求

RequestParams params = new RequestParams();
params.addBodyParameter("session_id", "4095c7d3c0c9240aa6975044");
params.addBodyParameter("birthday", "1986-01-01");

String url = "http://yourhost/index.php?act=User&m=updateProfile";
StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
     @Override
     public void onResponse(String response) {
        Log.e(TAG, response);
     }
    }, new Response.ErrorListener() {
     @Override
     public void onErrorResponse(VolleyError error) {
        error.printStackTrace();
     }
 });
request.setRequestParams(params);
request.setTag(TAG);
mRequestQueue.add(request);

文件上傳請求

RequestParams params = new RequestParams();
params.addBodyParameter("session_id", "4095c7d3c0c9240aa6975044");
params.addBodyParameter("hello_video", new File("/sdcard/20150914_153044.mp4"));
params.addBodyParameter("hello_pic", new File("/sdcard/20150914_153044.jpg"));

String url = "http://yourhost/index.php?act=ActorSetting&m=updateVideo";
StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
     @Override
     public void onResponse(String response) {
        Log.e(TAG, response);
     }
    }, new Response.ErrorListener() {
     @Override
     public void onErrorResponse(VolleyError error) {
        error.printStackTrace();
     }
 });

request.setLoadingListener(new Response.LoadingListener() {
    @Override
    public void onLoading(boolean isUpload, long total, long current) {
        Log.e(TAG, "isUpload:" + isUpload + ",total:" + total + ",current:" + current);
      }
  });
request.setRequestParams(params);
request.setTag(TAG);
mRequestQueue.add(request);

文件下載請求

文件下載支持斷點續傳機制,參數autoResume

    DownloadRequest(int method, String url, String fileSavePath, boolean autoResume,
    Response.Listener<File> listener, Response.ErrorListener errorListener);
String url = "http://yourhost/ff.apk";
DownloadRequest request = new DownloadRequest(Request.Method.GET, url, "/sdcard/out.apk", false, new Response.Listener<File>() {
    @Override
    public void onResponse(File response) {
        Log.e(TAG, "download finish:" + response.getAbsolutePath());
      }
    }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        error.printStackTrace();
       }
    });
request.setLoadingListener(new Response.LoadingListener() {
     @Override
     public void onLoading(boolean isUpload, long total, long current) {
         Log.e(TAG, "isUpload:" + isUpload + ",total:" + total + ",current:" + current);
        }
    });
request.setTag(TAG);
mRequestQueue.add(request);

取消請求

你可以在任何地方使用如下方法取消請求。

request.cancel();

或者使用TAG來取消請求。當你的Activity要被Destory時,把該Activity的相關請求取消掉,是一個相當好的習慣!

mRequestQueue.cancelAll(TAG);

歡迎fork。
https://github.com/cat9/EasyVolley

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章