1

最近、ゲームを書いているときに問題が発生しました。私のゲームでは、条件としてSurfaceViewを使用しwhile(true)ました。ホームボタンを押すと、プログラムが終了し、ログが表示されます。While(true) しかし、ループがまだ実行されていることがわかりました 。アクティビティが停止した後もループがまだ実行されているのはなぜですか? 誰か助けて理由を教えてくれませんか。ありがとう

4

2 に答える 2

1

より良い解決策は、アプリケーションの状態を保持するようにブール値を設定し、ゲームが終了したときにそれをfalseに設定することです。

while(appActive)
    //do game logic

編集:フィードバックをくれたBrajとFildorに感謝します

onPause()イベントハンドラーで行を追加します

appActive = false;

((注:Androidの開発は行っていません。これは、純粋に理論上の応答です))

于 2012-09-24T07:37:01.490 に答える
0

現在取り組んでいるゲームでは、次のようにしています。

    //Makes the thread draw until the state of running is set to false
    while(this.running)
    {
            //Draw
    }
    this.thread.interrupt();

onPause:

//Stop the thread that is responible for the drawing.
this.worker.running = false;

onResume で:

//Creates a new thread instance which sets this.running to true and calls the drawing method again
this.worker.restart();
于 2012-09-24T07:56:45.517 に答える