美文网首页Android开发经验笔记
Android构建二级缓存机制

Android构建二级缓存机制

作者: 陈利健 | 来源:发表于2015-08-04 16:21 被阅读1083次

    所谓二级缓存机制,即当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")
    

    相关文章

      网友评论

        本文标题:Android构建二级缓存机制

        本文链接:https://www.haomeiwen.com/subject/hrbvqttx.html