【构建Android缓存模块】(二)Memory Cache & File Cache
上一篇博客我们讲到普通应用缓存Bitmap的实现分析,根据 MVC 的实现原理,我将这个简单的缓存实现单独写成一个模块,这样可以方便以后的使用,对于任意的需求,都属于一个可插拔式的功能。之前提到,这个缓存模块主要有两个子部件:内存缓存的存取速度非常惊人,远远快于文件读取,如果没有内存限制,当然首选这种方式。遗憾的是我们有着16M的限制(当然大多数设备限制要高于 Android 官方说的这个数字),这也正是大 Bitmap容易引起 OOM 的原因。Memory Cache 将使用 WeakHashMap 作为缓存的中枢,当程序内存告急时,它会主动清理部分弱引用(因此,当引用指向为 null ,我们必须转向硬盘缓存读取数据,如果硬盘也没有,那还是重新下载吧)。