在做Android应用涉及到大量图片展示的时候,如果没有对内存做妥善处理,经常会报OOM的异常。其实也好理解,图片占用了太多内存。这个时候除了需要对图片进行压缩,另外还需要及时通过调用bitmap.recycle()释放图片占用的内存。但是盲目的调用这个方法,很有可能会出现trying to use a recycled bitmap的崩溃。尤其是你不确定回收的图片后续会不会被继续调用。
其实有一个更好的方案,就是bitmap所在的imageview调用setImageDrawable(null)。这样的话,对应图片的回收会有GC来完成,一来可以避免OOM,另外也能避免trying to use a recycled bitmap的崩溃,最重要的是,内存占用率不会过高。