在从一个活动转换到另一个活动时,我一直在努力使用位图内存管理。我发现两个最大的帮助是: (1)跟踪数组中片段或活动中的所有位图,然后在onPause()处将数组归零 (2)当我转换到另一个活动时,对我当前的活动调用finish()。
但是对于完成()我丢失了以前的所有状态信息。
有没有人知道finish()为我的位图内存管理做了什么,使我的位图无效?
我想手动做任何完成()正在做的事情来清理我的记忆。这是我用来清空位图的“clearBitmap”代码:
public void onPause() {
super.onPause();
clearBitmaps();
System.gc();
}
public void clearBitmaps() {
if (bitmapArray!=null) {
for (int i=0; i<bitmapArray.length; i++) {
if (bitmapArray[i]!=null) {
bitmapArray[i].recycle();
bitmapArray[i] = null;
}
}
bitmapArray = null;
}
}
我尝试使用clearBitmap()方法代替finish(),但它没有任何好处。
顺便说一句,我正在高效地加载位图并执行Android告诉我为Bitmap管理做的所有其他技巧,但仍然有这个问题。我发现这个问题令人困惑,因为我没有使用很多位图。但是,如果我在活动之间来回转换大约40次,它总是会崩溃(过去是6次,所以我在上面的方法上取得了重大进展)。
谢谢!
答案 0 :(得分:0)
这不是我自己的问题的答案,但我最终调用onBackPressed()来处理内存管理问题并保留我的状态信息。