finish()和位图内存管理

时间:2013-02-22 21:09:11

标签: android-intent android-image

在从一个活动转换到另一个活动时,我一直在努力使用位图内存管理。我发现两个最大的帮助是: (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次,所以我在上面的方法上取得了重大进展)。

谢谢!

1 个答案:

答案 0 :(得分:0)

这不是我自己的问题的答案,但我最终调用onBackPressed()来处理内存管理问题并保留我的状态信息。