2

別のスレッドを使用して、別のライブラリのコードで実行される計算を実行するアプリケーションがあります。パラメータによっては時間がかかる場合がありますので、キャンセルしていただきたいと思います。

アプリケーションの観点からの計算は1行であるため、停止変数を使用したり、割り込みをチェックしたりすることはできません。

public void run() {
    result = library.performCalculation(params);
}

使用できるようにしたいと思いますthread.stop()が、私が知る限り、これはAndroidでは不可能です。

とにかくスレッドの実行を停止させることはできますか?

4

2 に答える 2

1

あなたは正しいThread.stop()です、Androidでは利用できません(そしてそれがまだサポートされているシステムでさえ、その問題はその有用性を上回ります)。

あなたができることは2つあります。まず、呼び出しthread.interrupt()て、ライブラリを実行しているスレッドに中断フラグを設定します。次に、ライブラリを適切な時点で変更して呼び出しisInterrupted()、中断されているかどうかを判断します。中断されている場合は、自発的にクリーンアップして終了する必要があります。

于 2012-08-28T20:13:24.380 に答える
0

AsyncTaskはキャンセルできます。それをAsyncTaskに入れて、

 AsyncTask.cancel(true);
于 2012-08-28T20:12:19.577 に答える