缓存管理在这里
http://blog.youkuaiyun.com/intbird/article/details/38338713
图片处理在这里
http://blog.youkuaiyun.com/intbird/article/details/38338811
界面回收图片在这里
http://blog.youkuaiyun.com/intbird/article/details/19905549
工具Jar包在这里说明:
http://pan.baidu.com/s/1dDtOZbr
Android打开一张图片关闭,打开,再关闭,重复,
OOM了,GC也没用,发现是界面的图片资源没用释放掉;
如果缓存使用不当的话,就必须对界面中的图片进行回收.
1. 可以使用 SoftReference<Bitmap>软引用
2. Android的OOM除了本身图片过大会OOM,
需要进行bitmap.option或者thumb压缩以外(ps:google的压缩方法对图片高宽反着的图片是会崩溃的),
其实对于图片过多仅仅听过option单独处理每一张图片也是不够的,
需要从总体上分析所有的图片占用的内存情况再去计算加载单个图片;
3.GirdView和ListView可以自动回收子View
但是如果自己动态加载图片的布局不合理,比如使用的是网络图片
那么有异步回调未停止或者清除(Glide.pause())导致强引用,内存无法回收,
android就更不会回收Bitmap了呀;
4.如果实在无法回收,没办法了,就自己手动搜集回收吧
立即释放界面中ImageView中图片的.
在父Activity上使用Map<View,int[]> recycleViews;
在合适的地方,比如返回的时候,调用 RecycleBitmap.recycle(recycleViews);
这样也能保证解决问题