我在活动中遇到 OOM 错误问题。我有一个使用两个图像视图和大约 5 或 6 个按钮的布局。目前,我收到 OOM 错误,但注意到这些方法的改进。我使用这种方法在主屏幕中设置我的布局:
private void createButtons()
{
bitmaps = new ArrayList<Bitmap>();
ImageView img = (ImageView)findViewById(R.id.homescreen_logo);
Bitmap bmp = (Bitmap)BitmapFactory.decodeResource(getResources(), R.drawable.homescreen_logo);
img.setImageBitmap(bmp);
bitmaps.add(bmp);
ImageView imge = (ImageView)findViewById(R.id.countdown_labels);
Bitmap bitmp = (Bitmap)BitmapFactory.decodeResource(getResources(), R.drawable.homescreen_countdown_text);
imge.setImageBitmap(bitmp);
bitmaps.add(bitmp);
}
然后,在 onPause 方法中我调用这个方法:
private void recycleHomescreenImages() {
for (Bitmap bmap : bitmaps) {
bmap.recycle();
}
bitmaps = null;
}
虽然这确实在退出主屏幕活动时降低了我的堆使用量,但这还不够。由于我使用的其他视图不是 ImageViews,因此我不能采用仅使用 setImageBitmap() 方法的相同策略。关于如何强制为按钮收集背景的任何建议?这是我的一个按钮在 xml 中的样子。
<Button
android:id="@+id/1_button"
android:layout_width="294dp"
android:layout_height="60dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="33dp"
android:background="@drawable/homescreen_button_1"
android:onClick="onClick1"/>
谢谢你的帮助。