2011-05-27 61 views
0
private void startGameTimeElapseThread(){ 
    new Thread(new Runnable() { 
     Date d = new Date(); 
     public void run() { 
      while (true){ 
       try { 
        synchronized (this) { 
         this.wait(1000);  
        } 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       postInvalidate(); 
      } 
     } 
    }).start(); 
} 

當我執行上述方法,它給了我下面的錯誤。Android的內存不足錯誤postInvalidate

05-27 08:52:56.910: ERROR/AndroidRuntime(12715): FATAL EXCEPTION: main 
05-27 08:52:56.910: ERROR/AndroidRuntime(12715): java.lang.OutOfMemoryError: bitmap size exceeds VM budget 

有沒有人有任何想法如何保持刷新屏幕每秒沒有得到這個錯誤。 (在畫布上我畫了一個位圖,這表示位圖會導致此錯誤)

+0

位圖有多大?另外,我認爲MoonLander的例子有正確的做法。 – 2011-05-27 09:09:22

+0

嗨Dinesh,是否有可能發佈整個代碼,以便我們可以去 – 2011-05-27 09:18:23

回答

0

應用程序中存在內存泄漏。 postInvalidate()導致整個ViewGroup被重新繪製。可能是對你的位圖的引用仍然存在,或者對GC中無法釋放的Heap存在對Activity/View的弱引用。

由於您尚未發佈太多的代碼,here is a link關於如何跟蹤應用程序中的泄漏。

+0

我設法使用System.gc調用來實現它。 Thankx – dinesh707 2011-05-27 11:22:09