Picasso的缓存理解
想必大家对Picasso的使用已经比较熟悉了,在此处我就不多说了,不熟悉的小伙伴可以看看Picasso官网。然后简单说说项目的依赖。
依赖
一般情况下都是通过 GRADLE 进行依赖会方便很多
compile 'com.squareup.picasso:picasso:2.5.2' 进行依赖
但值得注意的是如果说想使用OkHttpDownloader来进行自定义缓存路径或者其他操作,则需引入okhttp的库,但不能使用最新版的okhttp3,因为包名发生了变化,加载的时候会出错。所以可以引入下面的版本。当然也可以使用okhttp3重写。
compile 'com.squareup.okhttp:okhttp:2.6.0'
权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
缓存
大家最关心的可能就是Picasso的缓存机制,如何进行缓存路径更改和大小设置。
首先Picasso的缓存机制是LruCache和DiskLruCache的组合,也就是memory and disk caching。
Picasso的图片加载优先级是 memory > disk > network,可以设置setIndicatorsEnabled(true)来判断图片是通过什么渠道加载的,可用以调试缓存清理的API。
LruCache
LruCache的主要核心实现是LinkHashMap,LinkHashMap是一个能按顺序储存的链表,其中有一个叫Lru的算法排序,能将最近添加或使用的文件放在表头,而很少用的文件放在表尾&