美文网首页
Android文件缓存方法

Android文件缓存方法

作者: 学不好语文的LJ码农 | 来源:发表于2016-12-07 17:42 被阅读318次

以下内容整理自互联网,仅用于个人学习


1. 内存缓存

通过预先消耗应用的一点内存来存储数据,便可快速的为应用中的组件提供数据,是一种典型的以空间换时间的策略。

LruCache 类(Android v4 Support Library 类库中开始提供)非常适合来做图片缓存任务 ,它可以使用一个LinkedHashMap的强引用来保存最近使用的对象,并且当它保存的对象占用的内存总和超出了为它设计的最大内存时会把不经常使用的对象成员踢出以供垃圾回收器回收。

给LruCache 设置一个合适的内存大小,需考虑如下因素:

  • 还剩余多少内存给你的activity或应用使用
  • 屏幕上需要一次性显示多少张图片和多少图片在等待显示
  • 手机的大小和密度是多少(密度越高的设备需要越大的 缓存)
  • 图片的尺寸(决定了所占用的内存大小)
  • 图片的访问频率(频率高的在内存中一直保存)
  • 保存图片的质量(不同像素的在不同情况下显示)

2. 使用磁盘缓存

内存缓存能够快速的获取到最近显示的图片,但不一定就能够获取到。当数据集过大时很容易把内存缓存填满(如GridView )。你的应用也有可能被其它的任务(比如来电)中断进入到后台,后台应用有可能会被杀死,那么相应的内存缓存对象也会被销毁。 当你的应用重新回到前台显示时,你的应用又需要一张一张的去加载图片了。

磁盘文件缓存能够用来处理这些情况,保存处理好的图片,当内存缓存不可用的时候,直接读取在硬盘中保存好的图片,这样可以有效的减少图片加载的次数。读取磁盘文件要比直接从内存缓存中读取要慢一些,而且需要在一个UI主线程外的线程中进行,因为磁盘的读取速度是不能够保证的,磁盘文件缓存显然也是一种以空间换时间的策略。

3. 使用SQLite进行缓存

网络请求数据完成后,把文件的相关信息(如url(一般作为唯一标示),下载时间,过期时间)等存放到数据库。下次加载的时候根据url先从数据库中查询,如果查询到并且时间未过期,就根据路径读取本地文件,从而实现缓存的效果。

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

4. 文件缓存

思路和一般缓存一样,把需要的数据存储在文件中,下次加载时判断文件是否存在和过期(使用File.lastModified()方法得到文件的最后修改时间,与当前时间判断),存在并未过期就加载文件中的数据,否则请求服务器重新下载。

注意,无网络环境下就默认读取文件缓存中的。

相关文章

  • android文件存储

    参考 全面的Android文件目录解析和获取方法(包含对6.0系统的说明) Android app的文件缓存目录 ...

  • Android文件缓存方法

    以下内容整理自互联网,仅用于个人学习 1. 内存缓存 通过预先消耗应用的一点内存来存储数据,便可快速的为应用中的组...

  • Android缓存机制——一般存储实现

    一、Android缓存机制 Android缓存分为内存缓存和文件缓存(磁盘缓存)。在早期,各大图片缓存框架流行之前...

  • 图片缓存

    参考:内存缓存LruCache实现原理Android中图片的三级缓存策略Android官方教程:保存到文件andr...

  • Android Studio 和 gradle 修改缓存文件夹路

    Android Studio 和 gradle 修改缓存文件夹路径

  • Android-DiskLruCache

    DiskLruCache用于实现磁盘缓存,它通过将缓存文件写入文件系统实现缓存的效果。使用前先添加依赖 该方法用于...

  • android图片的三级缓存策略和LruCache(面试必看)

    原理 Android图片三级缓存的原理如下图所示: 可见,Android中图片的三级缓存主要是强引用、软银用和文件...

  • 应用程序缓存

    计算单个文件大小 计算目录大小 清除缓存 SDWebImage框架自带请缓存方法

  • Android文件缓存目录

    最近项目在做视频加解密的东西,由于时间比较赶,视频在线解密播放没时间做,所以将方案改成先下载到本地然后解密以后播放...

  • Android - DiskLruCache 文件缓存

    什么是 DiskLruCache 是文件缓存的管理对象,使用 LRU 算法对保存在永久存储设备上的缓存文件进行管理...

网友评论

      本文标题:Android文件缓存方法

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