Java 由按钮背景引起的OutOfMemory

Java 由按钮背景引起的OutOfMemory,java,android,out-of-memory,Java,Android,Out Of Memory,我有一个每行都有按钮的列表。我的应用程序中的按钮使用自定义主题和自定义绘图(每个约0.5Kb png)。 用户抱怨OutOfMemory错误每周出现几次 第一个想法是按钮加载BitMapDrawable,而不回收它们。因此,它会导致超出本机内存。 为了测试它,我改变了我的可绘制的大图像约300Kb(jpgs)。 在不同的设备上测试Android版本2.1-2.3.x 我所看到的: 每个按钮仅加载和使用位图的一个实例。每个位图的本机图像id相同 当我旋转设备列表时,会重新绘制,并且本机图像id会更

我有一个每行都有按钮的列表。我的应用程序中的按钮使用自定义主题和自定义绘图(每个约0.5Kb png)。 用户抱怨OutOfMemory错误每周出现几次

第一个想法是按钮加载BitMapDrawable,而不回收它们。因此,它会导致超出本机内存。 为了测试它,我改变了我的可绘制的大图像约300Kb(jpgs)。 在不同的设备上测试Android版本2.1-2.3.x

我所看到的:

  • 每个按钮仅加载和使用位图的一个实例。每个位图的本机图像id相同
  • 当我旋转设备列表时,会重新绘制,并且本机图像id会更改
  • 屏幕旋转几圈后,出现OutOfMemory错误 所以,接下来就是“无人调用按钮背景回收”

    检查回收可以帮助解决onPause方法中的问题,我检索用于背景的位图并自行回收。OutofMemory不再发生

    回收视图使用的每个绘图板的任务让我感到害怕。我真不敢相信安卓已经成功了 这类问题


    是否有一种解决方案比为每个可绘制对象调用recycle更简单?

    如果可能,最好的解决方案是避免为按钮使用可绘制对象。

    如果可能,最好的解决方案是避免为按钮使用可绘制对象。

    尝试回收位图,关于如何高效加载大型位图的参考文档:也可以阅读Thx,但我已经阅读了这几页。还有另外一种问题。我自己不加载任何资源。我使用带有自定义绘图的主题来查看按钮、EditText、CehkCbox等…尝试回收位图,参考文档了解如何高效加载大型位图:也可以阅读Thx,但我已经阅读了这些页面。还有另外一种问题。我自己不加载任何资源。我使用带有自定义绘图的主题作为视图,如按钮、EditText、CehkcBoxes等。。。