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