解码会产生很多图片,滑过后不要显示,如果直接回收,会浪费不少资源.
在没有缓存的情况下,会看到gc还是比较频繁的.
有了缓存后,明显gc少了.
目录
常用的缓存
自定义缓存
显示相关的内存缓存
解码缓存池
内存缓存实现:
解码缓存池实现:
常用的缓存
lrucache,这是最常用的,也是android sdk里面有的.就是按访问时间顺序,内部使用linkedhashmap,会记录访问时间.
androidx.core.util.Pools
这是一个接口,实现后可以自己管理池.严格来说,它并不是一个缓存类,是用来构建缓存的基础类.
用lrucache作缓存,有一些不好的点,设置了容量并不是图片的字节总数,是图片的张数.这对于图片大小不一的情况,可能并不是很好.