2013-02-22 70 views
0

从一个活动转换到另一个活动时,我一直在努力处理位图内存管理。我发现两个最大的帮助是: (1)跟踪数组中片段或活动中的所有位图,然后在onPause()和 (2)上清零数组,然后调用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()方法来代替精加工(),但它并没有什么好处。

顺便说一句,我有效地加载位图,并做Android告诉我做的位图管理所有其他技巧,但仍然有这个问题。我觉得这个问题令人困惑,因为我没有使用很多位图。但是如果我在大约40次的活动之间来回切换,它总是会崩溃(它曾经是6次,所以我已经用上面的方法取得了重大进展)。

谢谢!

回答

0

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