我想以前已经问过很多次了,但仍然有些事情我不太明白。
我尝试了两种不同的方法:
- 将所有图像保留在内存中,当开始超过一定限制时,开始删除它们
- 让 Android 使用 SoftReferences 解决这个问题
2. 有时,我分配它们时,它只是清理它们!我不会分配太多 - 30-40 张 50x50 像素的图像。
所以我坚持一个。问题是极限是多少?
- 我可以从设备中获取一些可靠的信息,了解我还剩下多少位图内存吗?我做了一些研究,观察 DDMS 值,它只是占用越来越多的空间(如果我不清理的话)直到它爆炸。前一秒只剩下200K,下一秒系统又提供了2M……
- 我目前正在使用一些基于设备型号或屏幕尺寸的启发式决策。我认为从长远来看这是死胡同。在某些手机上出现内存异常,在其他手机上完全免费。
- 是否有第三种解决方案,即正确的解决方案?
最重要的问题:你是recycle()
-你的位图?这对于姜饼之前的应用程序非常重要(也许姜饼之后也是如此)。
正在观看Android 应用程序的内存管理Google I/O 2011 会议 http://www.youtube.com/watch?v=_CruQY55HOk帮助我更好地了解 Android 开发的特殊性。
该视频提到了一个名为MAT - a 内存分析器 http://eclipse.org/mat- 这对于确定内存中是否存在已泄漏的对象非常有用。您拥有的数量可能比您认为的 30-40 个还要多。
为了查看和/或记录堆的当前大小等,我建议使用以下代码这个关于 Android 内存不足异常的答案 https://stackoverflow.com/questions/3238388/android-out-of-memory-exception-in-gallery/3238945#3238945.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)