Android缓存处理-->

Posted aWay01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android缓存处理-->相关的知识,希望对你有一定的参考价值。

  采用缓存,可以进一步大大缓解数据交互的压力,又能提供一定的离线浏览。

  缓存管理的适用环境:

    1. 提供网络服务的应用

    2. 数据更新不需要实时更新,哪怕是3-5分钟的延迟也是可以采用缓存机制。

    3. 缓存的过期时间是可以接受的(类似网易的新闻阅读,支持离线离线阅读)

  这样所带来的好处:

    1. 减小服务器的压力

    2. 提高客户端的响应速度(本地数据提取嘛)

    3. 一定程度上支持离线浏览(可以参考网易的那个新闻应用,个人感觉离线阅读做得非常棒。)

  缓存管理的原理:通过时间的设置来判断是否读取缓存还是重新下载;断网下就没什么好说的,直接去缓存即可。

  缓存方法:

    1.数据库缓存
      这种方法是在下载完数据文件后,把文件的相关信息如url,路经,下载时间,过期时间等存放到数据库,当然我个人建议把url作为唯一的标识。下次下载的时候根据url先从数据库中查询,如果查询到当前时间并未过期,就根据路径读取本地文件,从而实现缓存的效果。

      缓存的数据库是存放在/data/data/<package>/databases/目录下,是占用内存空间的,如果缓存累计,容易浪费内存,需要及时清理缓存。

    2.文件法缓存

      使用File.lastModified()方法得到文件的最后修改时间,与当前时间判断是否过期,从而实现缓存效果。实现上只能使用这一个属性,没有为其它的功能提供技术支持的可能。操作上倒是简单,比较时间即可,而且取的数据也就是文件里的JSON数据而已。

      文件缓存两点说明:

        1. 不同类型的文件的缓存时间不一样。

笼统的说,不变文件的缓存时间是永久,变化文件的缓存时间是最大忍受不变时间。说白点,图片文件内容是不变的,一般存在SD卡上直到被清理,我们是可以永远读取缓存的。配置文件内容是可能更新的,需要设置一个可接受的缓存时间。

        2. 不同环境下的缓存时间标准不一样。

无网络环境下,我们只能读取缓存文件,为了应用有东西显示,没有什么过期之说了。

WiFi网络环境下,缓存时间可以设置短一点,一是网速较快,而是流量不要钱。

3G流量环境下,缓存时间可以设置长一点,节省流量,就是节省金钱,而且用户体验也更好。

GPS就别说更新什么的,已经够慢的了。缓存时间能多长就多长把。

        当然,作为一款好的应用,不会死定一种情况,针对于不同网络变换不同形式的缓存功能是必须有的。而且这个时间根据自己的实际情况来设置:数据的更新频率,数据的重要性等。

    -------------------------------图片缓存--------------------------

    在android中,有一个叫做LruCache类专门用来做图片缓存处理的。
它有一个特点,当缓存的图片达到了预先设定的值的时候,那么近期使用次数最少的图片就会被回收掉。步骤:

  (1)要先设置缓存图片的内存大小,我这里设置为手机内存的1/8,
           手机内存的获取方式:int MAXMEMONRY = (int) (Runtime.getRuntime() .maxMemory() / 1024);
  (2)LruCache里面的键值对分别是URL和对应的图片
  (3)重写了一个叫做sizeOf的方法,返回的是图片数量。

  (4)下面的方法分别是清空缓存、添加图片到缓存、从缓存中取得图片、从缓存中移除。
          移除和清除缓存是必须要做的事,因为图片缓存处理不当就会报内存溢出,所以一定要引起注意。

 

以上是关于Android缓存处理-->的主要内容,如果未能解决你的问题,请参考以下文章

Android缓存处理

Android缓存处理

Android 逆向函数拦截实例 ( ③ 刷新 CPU 高速缓存 | ④ 处理拦截函数 | ⑤ 返回特定结果 )

android Cache——webview的缓存处理

Android 网络图片加载缓存处理库ImageLoader和Picasso

Android WebView 缓存处理