我在每行上都有一个带有按钮的列表。我的应用程序中的按钮使用带有自定义可绘制对象的自定义主题(每个约0.5Kb png)。
用户抱怨OutOfMemory错误,该错误每周出现几次。

第一个想法是Buttons加载BitmapDrawables而不回收它们。因此,这导致超出本机内存。
为了进行测试,我将绘画对象更改为300Kb(jpgs)以上的较大图像。
在不同的设备上测试Android版本2.1-2.3.x

我所看到的:


每个按钮仅加载和使用一个位图实例。每个位图的本机图像ID均相同。
当我旋转设备列表时,将重新绘制图像,并且本机图像ID也会更改。
屏幕旋转几次后,发生OutOfMemmoryError!


因此,遵循“没有人调用回收按钮背景”。

检查回收可以帮助解决onPause方法中的问题,我检索了用于背景的Bitmap并自己回收了它。 OutOfMemmory不再发生。

回收Views使用的每个可绘制对象的任务使我感到恐惧。我不敢相信android有
那样的问题!

有没有比每个可绘制对象更容易调用回收的解决方案?

最佳答案

最好的解决方案是尽可能避免使用Button的可绘制对象。

09-10 07:13
查看更多