2011-05-27 62 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