Fresco源码分析-SimpleDraweeView在ListView里怎么释放内存的?

当ListView包含大量图片时,不正确的处理可能导致OOM。ListView通过RecycleBin复用view,而要释放图片资源,关键在于解除对Bitmap的引用。Fresco通过在SimpleDraweeView中覆盖onDetach方法,在Item移出屏幕时释放内存,避免内存泄漏。
摘要由CSDN通过智能技术生成

       ListView的Item有图片, 当条数很多例如超过1000条,如果不做任何处理,  划动ListView会出现OOM导致应用崩溃。  我们现在都用了三方开源图库框架, 并没有出现OOM,   从而可能忽视了其实现原理,  现在是时候回顾一下了。微笑

       先回顾一下ListView的基本知识, ListView继承于AbsListView,  AbsListView有个内部类RecycleBin用于复用view,BaseAdpater里getView方法中convertView参数就是从RecycleBin类对象缓存中取的。

注释:The RecycleBin facilitates reuse of views across layouts. The RecycleBin has two levels of storage: ActiveViews and ScrapViews. ActiveViews are those views which were onscreen at the start of a layout. By construction, they are displaying current information. At the end of layout, all views in ActiveViews are demoted to ScrapViews. ScrapViews are old views that could potentially be used by the adapter to avoid allocating

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值