7

I am developing on Android Samsung galaxy TAB 10.1. After I official updated to 4.0.4 version often get error:

11-01 17:04:35.382: E/gralloc(11657): GetBufferLock timed out for thread 11657 buffer 0x55 usage 0x33 LockState 1

and device immediate restarts. This error appear totally random and if I am debugging my own applications.

Any suggestion?

P.S.

My only one infinite paint loop:

public void run() {
    Canvas canvas = null;

    while (true) {
        try {
            Thread.sleep(50);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        try {
            synchronized (lock) {
                if (!invalidated)
                    continue;
            }

            canvas = mHolder.lockCanvas();

            synchronized (mHolder) {
                onDraw(canvas);
            }

            synchronized (lock) {
                invalidated = false;
            }
        } finally {
            if (canvas != null) {
                mHolder.unlockCanvasAndPost(canvas);
                canvas = null;
            }
        }

        synchronized (lock) {
            if (painter == null)
                break;
        }
    }
}
4

2 に答える 2

1

この GPU メモリに何か問題があると思います。このエラーが発生したときに重いグラフィック表示を行っていませんか?

そうでない場合... 多分別のアプリです。

GPU の消費量が多いアプリ (おそらく重いライブ壁紙?) をチェックして削除することをお勧めします。その後、再起動するとこれが修正されます。

また、決して書くべきではないことに注意してください:

while (true) {
}

少なくとも実行中のフラグを追加します:

while(running){
}

そのため、アプリケーションの停止時に running を false に設定できます。

于 2013-03-14T12:31:51.753 に答える
0

他のスレッドからアクセスする必要のあるブロックが、アプリケーションによって無限に使用されているようです。paint メソッド内で無限ループを実行していますか?

于 2013-03-15T07:07:03.963 に答える