postInvalidate时出现Android Out of Memory错误

时间:2011-05-27 08:58:36

标签: android

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();
}

当我执行上述方法时,它给出了以下错误。

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

是否有人知道如何在不出现此错误的情况下每秒刷新屏幕。 (在画布中我在那里绘制一个位图。这表示位图会导致此错误)

1 个答案:

答案 0 :(得分:0)

您的应用程序中存在内存泄漏。 postInvalidate()会导致整个ViewGroup被重绘。您的位图的弱引用可能仍然存在于某处,或者对于GC无法释放的堆中存在对活动/视图的弱引用。

由于您没有发布很多代码,here is a link有关如何跟踪应用程序中的泄漏的信息。