2018.2.28、android-Bitmap学习笔记

本文介绍了Bitmap的回收机制,包括recycle方法的作用及其注意事项。同时深入探讨了LruCache的内部实现原理,如trimToSize方法如何工作以及entryRemoved回调的使用。此外还讲解了如何计算合适的insampleSize来加载图片,以及不同缓存层级的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值