0

アプリケーションのさまざまなポイントで、次のように新しいランナブルを作成して起動するとします。

new Thread(new Runnable() { 
    public void run() {
    while(true) {
       //do lots of stuff
       //draw lots of stuff on screen, have a good ol time
       //total loop processing time abt 1250-1500ms
       //check for conditions to stop the loop, break;
   }    }   }

break;さて、 whileループ内以外で、実行の途中でそのスレッドを終了する方法はありますか?ユーザーが別のマップをロードするように要求した場合のように、親スレッドから具体的かつ即座にそれを強制終了できるようにしたいと思います。if (stopFlag) break;コードの5行程度ごとに(親スレッドで設定) を挿入するのは不格好です。

RunnableとThreadのメソッドを覗いてみましたが、見えません。誰かが素晴らしいトリックを知っていますか?

4

3 に答える 3

3

AsyncTaskを使用し、 cancelを呼び出してスレッドをキャンセルできます。

于 2011-05-10T21:50:31.573 に答える
0

代わりにwhile (true)、スレッド/実行可能ファイルを停止する必要があるときに適切に変更される条件またはフラグを確認することもできます。Thread.stop()は非推奨になっているため、これが推奨される戦略のようです。

于 2011-05-10T22:05:37.463 に答える
0

提案されているようにAsyncTaskを使用できます。これは、おそらくこの場合に最適に機能します。また、interrupt()メソッドを使用することもできると思います。これは、Androidを使用していない場合に適していますが、割り込みが発生しているかどうかを明示的に確認する必要があります。

Thread t = new Thread(new Runnable() {
    public void run() {
        while (true) {
            // do some stuff
            if (isInterrupted()) {
                break;
            }
        }
     });
t.start();

// Whoa! Need to stop that work!
t.interrupt();
于 2011-05-11T06:06:58.507 に答える