我想问一个之前已经问过几次的问题。如果我重复了,很抱歉,但是对于什么是最佳解决方案,我并不清楚。
问题是“如何在使用ImageView位图资源后清除它,以便我们在内存中没有引用?”
以下是例子:
- 屏幕1重定向到屏幕2
- 屏幕2包含控件A(大照片的预览)
- 控件A包含ImageView B
- 当启动控件A时设置ImageView B
第一次运行时一切正常。一旦控件A完成,我就从屏幕2重定向到屏幕1。此时,所有与控件A或ImageView B或其正在使用的位图相关的引用都应该失效。他们没有!!!
我尝试了各种解决方案,包括bitmap.recycle(),将finalize()添加到Control A中,System.gs()和在onStop()和onDestroy()等各种地方将控件置空,以及屏幕2上的其他所有内容,但都无济于事!
问题在于,当我第二次访问屏幕时,即从屏幕1转到屏幕2时(即再次创建照片预览时),我会收到内存不足异常。我的理解是,之前位图的引用没有被清除。
在重定向回屏幕1之前,如何将其删除?
我注意到一件事。如果我通过裁剪或制作图像的较小尺寸来减小照片的大小,一切都很顺利,几次后...我遇到了同样的问题。因此,它只需要更长的时间才能填满。
我真的很希望能够提供一些解决方案,因为这很关键。