android二级缓存,Android构建二级缓存机制

所谓二级缓存机制,即当Android端需要获得数据时,首先从内存中查找(按键查找),内存中没有的再从磁盘文件或sqlite中去查找,若磁盘中也没有才通过网络获取。

当获得来自网络的数据,就以key-value对的方式先缓存到内存(一级缓存),同时缓存到文件或sqlite中(二级缓存)。

内存缓存会造成堆内存泄露,所以一级缓存通常要严格控制缓存的大小。

ASimpleCache是一个轻量级的开源cache框架,作者将其简化封装成一个简单ACache的java类。

private ACache acache;

acache = ACache.get(getActivity());

JSONObject cache_List = (JSONObject) acache.getAsJSONObject("list");

if(cache_List != null) {

CHBRsp result = new CHBRsp(CHBRsp.CodeSucess, "", cache_List );

loadDataSucess(result);

} else{

onRefresh();

}

private void loadDataSucess(CHBRsp result) {

//如果下拉刷新成功请求到数据,则缓存起来

if(page == 1) {

JSONObject json = result.tryExtra(JSONObject.class);

//缓存时效性为6小时

acache.put("list", json, 60*60*6);

}

//*******

}

在一些不是非常需求时效性的展示页面,首次进入页面的时候,先寻找缓存,将其加载到页面,无需请求网络数据。当用户需要刷新的时候,可以通过下拉刷新等请求最新数据onRefresh,并将本次刷新的数据再次缓存,重置时效时间6小时。当过了时效性的时候,用户再进入本页面,将无法取得缓存数据,而直接onRefresh请求网络数据。(类似于新浪微博,离线也可以查看最后一次刷新停留的页面数据。)

//设置缓存数据,存入一二级缓存,可以设置时效

acache.put(key,data,time)或acache.put(key,data)

//取出对应数据,比如JSONObject等

acache.getAsJSONObject("list")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值