android图片处理

 推荐阅读
cache bitmap
manage-memory

Bitmap.recycle()
android3.0之前,bitmap数据保存在native memory,Bitmap对象在gc被回收时,对应的native memory 被释放。
所以存在jvm memory消耗很少,gc没有被触发,但native memory消耗很大。建议在图片不用时调用recycle()方法尽快回收Bitmap对象。
android3.0及之后,bitmap数据保存在jvm内存中。


案例-Universal-Image-Loader

1 异步加载模型
 ThreadPoolExecutor 多线程处理 imageload-task
 结果通过ImageLoadInfo关联的handler(run in UI thread)处理

2 缓存处理
DiskCache
LruMemoryCache


3 图片压缩处理
BaseImageDecoder.decode()

4 ImageView销毁,图片重设处理
 通过WeakReference<View>跟踪ImageView被销毁的情况。
 public boolean isCollected() {
      return viewRef.get() == null;
 }
通过维护Map<ViewId, CacheKey>,比较当前处理task的View对应的cachekey是否改变跟踪ImageView被重设图片的情况。
LruMemoryCache: LinkedHashMap<String, Bitmap> map    to save bitmap

静态结构


图片加载流程序列

案例-facebook_fresco




four different degrees of reference strength: strong, soft, weak, and phantom, in order from strongest to weakest.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值