2018.2.28、android-Bitmap学习笔记

175 阅读1分钟

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、内存缓存:速度快