1、recycle
①、回收java内存的对象和native内存对象,②、当bitmap调用recycle方法后,该bitmap就会被标记为“dead”状态,再次调用getPixels()或setPixels()方法时将会抛出异常。③、所以只有在你确定没有进一步使用位图 的时候再调用它。
2、LruCache<K, V>
大小有限制具有强引用的缓存。底层封装了LinkedHashMap<K, V>,键和值都不能为空。
其中包含了get 和put的方法,其核心的方法时通过trimToSize() (删除最大的条目,直到剩余的条目总数达到或低于所请求的大小。最久使用最少的条目将被删除)
entryRemoved(boolean evicted, K key, V oldValue, V newValue) 回调给子类的移除和新增的值。
3、计算insamplesize
根据图片的宽高计算出合适得到比例
4、缩略图
options.inJustDecodeBounds 如果设置为true,解码器将返回null(没有位图),但是
out…
字段仍然设置,允许调用者查询位图,而不必为其像素分配内存。 Bitmap.Config inPreferredConfig = Bitmap.Config.ARGB_8888 每个像素占4byte,每个颜色通道占8个精度256; RGB_565:每个像素占2byte 当使用不透明的位图时,这个配置可能是有用的。 不需要高颜色的保真度。
5、三级缓存
1、网络缓存:速度慢、消耗流量 2、本地缓存: 3、内存缓存:速度快