Android實現離線緩衝的方法_Android

來源:互聯網
上載者:User

 離線緩衝就是在網路暢通的情況下將從伺服器收到的資料儲存到本地,當網路斷開之後直接讀取本地檔案中的資料。如Json 資料緩衝到本地,在斷網的狀態下啟動APP時讀取本機快取資料顯示在介面上,常用的APP(網易新聞、知乎等等)都是支援離線緩衝的,這樣帶來了更好的使用者體驗。

如果能夠在調用網路介面後自動緩衝返回的Json資料,下次在斷網狀態下調用這個介面擷取到緩衝的Json資料的話,那該多好呢?Volley做到了這一點。

因此,今天這篇文章介紹的就是使用Volley內建的資料緩衝,配合Universal-ImageLoader的圖片緩衝,實現斷網狀態下的圖文顯示。

實現效果


如何??

1.使用Volley訪問網路介面

/*** 擷取網路資料*/private void getData() {StringRequest stringRequest = new StringRequest(Request.Method.POST, TEST_API, new Response.Listener<String>() {@Overridepublic void onResponse(String s) {textView.setText("data from Internet: " + s);try {JSONObject jsonObject = new JSONObject(s);JSONArray resultList = jsonObject.getJSONArray("resultList");JSONObject JSONObject = (org.json.JSONObject) resultList.opt(0);String head_img = JSONObject.getString("head_img");ImageLoader.getInstance().displayImage(head_img, imageView);} catch (JSONException e) {e.printStackTrace();}}}, new Response.ErrorListener() {@Overridepublic void onErrorResponse(VolleyError volleyError) {}}) {@Overrideprotected Map<String, String> getParams() throws AuthFailureError {Map<String, String> map = new HashMap<String, String>();map.put("phone", "15962203803");map.put("password", "123456");return map;}};queue.add(stringRequest);}

當介面訪問成功以後,Volley會自動緩衝此次紀錄在/data/data/{package name}/cache/volley檔案夾中。

 

開啟上面的檔案,可以發現介面的路徑和傳回值都被儲存在該檔案裡面了。

 

當在斷網狀態時,如何擷取到該介面的緩衝的傳回值呢?
使用RequestQueue提供的getCache()方法查詢該介面的快取資料

if (queue.getCache().get(TEST_API) != null) {String cachedResponse = new String(queue.getCache().get(TEST_API).data);

2.使用Universal-ImageLoader載入圖片

ImageLoader.getInstance().displayImage(head_img, imageView);

注意點

1.觀察上面的快取檔案可以發現,Volley只緩衝了介面路徑,並沒有緩衝介面的傳入參數,因此如果做分頁查詢的話,使用此方法是不妥的。

2.在測試過程中,依然發現有的時候擷取不到快取資料,有的時候卻可以擷取到。對擷取緩衝的代碼消極式載入能夠有效解決這個問題。

3.如果考慮到緩衝的到期策略,可以使用更好的ASimpleCache架構輔助開發。對緩衝有更高要求的APP,依然應該使用檔案快取或資料庫緩衝。

以上內容是小編給大家介紹的Android實現離線緩衝的方法,希望對大家有所協助!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.