安卓三级缓存的小知识

由于博主在安卓方面还是一个小白,面试被问到了这样一道题:

如何在使用三级缓存的情况下,后台的数据和客户端的数据能够同时更新。(明显有坑啊。。。。)

坑: 后台的数据和客户端的数据如果同时更新, 要三级缓存还有什么用?


后来回来想一想:

可以把获取到的字符串以流的形式保存到本地, 当再次进入的时候,先从内存中拿,内存中没有数据, 从本地拿数据,

最重要的是对本地的缓存文件进行判断,看是否有效,可以给本地缓存的设置一个缓存的时间, 如果缓存时间过了,本地的缓存无效,如果有效,读本地的缓存数据,如果无效,从网络上获取,这样,既能发挥了三级缓存的作用,又能保证后台服务器更新数据的时候,客户端也能跟着更新。

大体逻辑是这样:

 <span style="white-space:pre">	</span>// 2、获取缓存文件
        File cahceFile = getCacheFile(url);
        // 3、判断缓存文件是否有效
        if (cacheFileIsValid(cahceFile)) {
        // 4、如果缓存文件是有效的,读缓存
           
        } else {
        // 5、如果缓存文件是无效的,读网络
          

  开发者一方面希望尽量读取缓存,用户一方面希望实时刷新,但是响应速度越快越好,流量消耗越少越好(关于这块,的确开发中我没怎么想到,毕竟接口就是这么多,现在公司的产品几乎点一下就访问一下,而且还有些鸡肋多余的功能。,是一个矛盾。

1. 数据的最长多长时间不变,对应用无大的影响。

       比如,你的数据更新时间为4小时,则缓存时间设置为1~2小时比较合适。也就是更新时间/缓存时间=2,但用户个人修改、网站编辑人员等一些人为的更新就另说。一天用户总会看到更新,即便有延迟也好,视你产品的用途了;如果你觉得你是资讯类应用,再减少,2~4小时,如果你觉得数据比较重要或者比较受欢迎,用户会经常把玩,再减少,1~2小时,依次类推。


2. 提供刷新按钮。

       必要时候或最保险的方法使在相关界面提供一个刷新按钮,或者当下流行的下拉列表刷新方式。为缓存,为加载失败提供一次重新来过的机会。毕竟喝骨头汤的时候,我也不介意碗旁多双筷子。

总而言之,一切用户至上,为了更好的用户体验,方法也会层出不穷。期待更好的办法



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值