三级缓存
- 优先从内存中加载图片, 速度最快, 不浪费流量
- 其次从本地(sdcard)加载图片, 速度快, 不浪费流量
- 最后从网络下载图片, 速度慢, 浪费流量
内存溢出
- 不管android设备总内存是多大, 都只给每个app分配一定内存大小, 16M, 一旦超出16M就内存溢出了
引用
- 默认强引用, 垃圾回收器不会回收
- 软引用, 垃圾回收器会考虑回收 SoftReference
- 弱引用, 垃圾回收器更会考虑回收 WeakReference
- 虚引用, 垃圾回收器最优先回收 PhantomReference
因为从 Android 2.3 (API Level 9)开始,垃圾回收器会更倾向于回收持有软引用或弱引用的对象,这让软引用和弱引用变得不再可靠。
- 使用LruCache<String, Bitmap>替代HashMap<>