一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android實現(xiàn)離線緩存的方法

Android實現(xiàn)離線緩存的方法

2021-06-28 16:05Leo.Han Android

離線緩存就是在網(wǎng)絡暢通的情況下將從服務器收到的數(shù)據(jù)保存到本地,當網(wǎng)絡斷開之后直接讀取本地文件中的數(shù)據(jù)。本文給大家介紹Android實現(xiàn)離線緩存的方法,需要的朋友參考下

 離線緩存就是在網(wǎng)絡暢通的情況下將從服務器收到的數(shù)據(jù)保存到本地,當網(wǎng)絡斷開之后直接讀取本地文件中的數(shù)據(jù)。如json 數(shù)據(jù)緩存到本地,在斷網(wǎng)的狀態(tài)下啟動app時讀取本地緩存數(shù)據(jù)顯示在界面上,常用的app(網(wǎng)易新聞、知乎等等)都是支持離線緩存的,這樣帶來了更好的用戶體驗。

如果能夠在調(diào)用網(wǎng)絡接口后自動緩存返回的json數(shù)據(jù),下次在斷網(wǎng)狀態(tài)下調(diào)用這個接口獲取到緩存的json數(shù)據(jù)的話,那該多好呢?volley做到了這一點。

因此,今天這篇文章介紹的就是使用volley自帶的數(shù)據(jù)緩存,配合universal-imageloader的圖片緩存,實現(xiàn)斷網(wǎng)狀態(tài)下的圖文顯示。

實現(xiàn)效果

Android實現(xiàn)離線緩存的方法

如何實現(xiàn)?

1.使用volley訪問網(wǎng)絡接口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
* 獲取網(wǎng)絡數(shù)據(jù)
*/
private void getdata() {
stringrequest stringrequest = new stringrequest(request.method.post, test_api, new response.listener<string>() {
@override
public 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() {
@override
public void onerrorresponse(volleyerror volleyerror) {
}
}) {
@override
protected 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文件夾中。

Android實現(xiàn)離線緩存的方法

打開上面的文件,可以發(fā)現(xiàn)接口的路徑和返回值都被保存在該文件里面了。

Android實現(xiàn)離線緩存的方法

當在斷網(wǎng)狀態(tài)時,如何獲取到該接口的緩存的返回值呢?
使用requestqueue提供的getcache()方法查詢該接口的緩存數(shù)據(jù)

?
1
2
if (queue.getcache().get(test_api) != null) {
string cachedresponse = new string(queue.getcache().get(test_api).data);

2.使用universal-imageloader加載圖片

?
1
imageloader.getinstance().displayimage(head_img, imageview);

注意點

1.觀察上面的緩存文件可以發(fā)現(xiàn),volley只緩存了接口路徑,并沒有緩存接口的傳入?yún)?shù),因此如果做分頁查詢的話,使用此方法是不妥的。

2.在測試過程中,依然發(fā)現(xiàn)有的時候獲取不到緩存數(shù)據(jù),有的時候卻可以獲取到。對獲取緩存的代碼延遲加載能夠有效解決這個問題。

3.如果考慮到緩存的過期策略,可以使用更好的asimplecache框架輔助開發(fā)。對緩存有更高要求的app,依然應該使用文件緩存或數(shù)據(jù)庫緩存。

以上內(nèi)容是小編給大家介紹的android實現(xiàn)離線緩存的方法,希望對大家有所幫助!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 2022天堂岛日产 | juy799大岛优香在线观看 | 国产一区在线播放 | 国偷盗摄自产福利一区在线 | 丰满艳妇亲伦视频 | 亚洲国产欧美另类 | 女老板用丝袜脚夹我好爽 | 四虎影视永久免费视频观看 | 日本亚欧乱色视频在线观看 | 调教催眠改造np总攻 | 国产在线观看福利片 | 午夜精品网站 | 国产区成人综合色在线 | 久久全国免费久久青青小草 | 侵犯小男生免费视频网站 | 国产在视频线在精品 | 俄罗斯烧性春三级k8播放 | 粉嫩国产14xxxxx0000 | 成人资源在线观看 | 欧美一区二区三区高清不卡tv | 福利国产精品 | 国产亚洲精品线观看77 | 欧美xxxxx九色视频免费观看 | 久久伊人精品青青草原2021 | 无码人妻精品一区二区蜜桃在线看 | 黑人草 | 欧美一级片免费在线观看 | 女仆掀起蕾丝裙被打屁股作文 | 91这里只有精品 | 小鸟酱视频在线观看 | 日本xxxx在线视频免费 | 洗濯屋H纯肉动漫在线观看 武侠艳妇屈辱的张开双腿 午夜在线观看免费观看 视频 | 麻豆最新地址 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 久久久久琪琪精品色 | 欧美黑大吊 | 亚洲视屏在线观看 | 国产毛片在线观看 | tube日本高清老少配 | 国产综合社区 | 国产香蕉一区二区在线观看 |