1

私のアプリケーションを磨き、ユーザーが去った後に再開させるだけです。アプリケーションが復元されると、IllegalThreadStateExceptionが発生しますが、これは非常に煩わしいものです。この問題は、グーグルが月着陸船に与える例に存在します。surfaceViewを使用しているときに動作を復元する方法を見つけた人はいますか?

4

3 に答える 3

2

私自身のテストでは、surfaceCreated() メソッドで描画スレッドを作成し、これにより問題が完全に解決されました。これは私のメソッドの実装です:

@Override
public void surfaceCreated(SurfaceHolder arg0) {
    _thread = new DrawThread(getHolder());
    _thread.setRunning(true);
    _thread.start();
}
于 2010-08-20T18:15:32.097 に答える
0

したがって、コードでは、が呼び出されると falsesurfaceDestroyed()に設定され、 が呼び出されます。これにより、スレッドが完了して終了します。アプリが再起動されて呼び出されると、 が呼び出されます。スレッドは終了後に開始できないため、これは無効です。mRunthread.join()surfaceCreated()thread.start()

修正する 2 つのオプション:

a)surfaceCreated()上記のように - で新しいスレッドを開始します。

b) または、チェックインを追加して、surfaceDestroyed()trueActivity.isFinishing()の場合にのみスレッドを終了します。これを行うために、 truewhile(mRun)を返す場合にのみ false に設定される別の while ループでスレッド内を囲みましたisFinishing()

于 2010-11-05T02:07:57.443 に答える