缓存管理在这里

http://blog.csdn.net/intbird/article/details/38338713

图片处理在这里

http://blog.csdn.net/intbird/article/details/38338811

界面回收图片在这里

http://blog.csdn.net/intbird/article/details/19905549

工具Jar包在这里说明:

http://pan.baidu.com/s/1dDtOZbr

Android打开一张图片关闭,打开,再关闭,重复,

OOM了,GC也没用,发现是界面的图片资源没用释放掉;

如果缓存使用不当的话,就必须对界面中的图片进行回收.

1. 可以使用 SoftReference软引用

2. Android的OOM除了本身图片过大会OOM,

需要进行bitmap.option或者thumb压缩以外(ps:google的压缩方法对图片高宽反着的图片是会崩溃的),

其实对于图片过多仅仅听过option单独处理每一张图片也是不够的,

需要从总体上分析所有的图片占用的内存情况再去计算加载单个图片;

3.GirdView和ListView可以自动回收子View

但是如果自己动态加载图片的布局不合理,比如使用的是网络图片

那么有异步回调未停止或者清除(Glide.pause())导致强引用,内存无法回收,

android就更不会回收Bitmap了呀;

4.如果实在无法回收,没办法了,就自己手动搜集回收吧

立即释放界面中ImageView中图片的.

在父Activity上使用MaprecycleViews;

在合适的地方,比如返回的时候,调用 RecycleBitmap.recycle(recycleViews);

这样也能保证解决问题

5.现在的开源图片库优秀的太多了,也不用过于关心图片缓存问题了

这个之前的代码就删掉了

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐