スレッドを安全に停止するにはどうすればよいですか?スレッドを安全にアンドロイドで停止するには?
downloadThread = new Thread(new Runnable() {
@Override
public void run() {
});
downloadThread.start();
}
スレッドを安全に停止するにはどうすればよいですか?スレッドを安全にアンドロイドで停止するには?
downloadThread = new Thread(new Runnable() {
@Override
public void run() {
});
downloadThread.start();
}
スレッドを中断します。スレッドのrun()
メソッドでは、異なる論理ブロックの末尾にあるisInterrupted()
の値を確認してください。
例えば、あなたのrun()
メソッドは、3つの論理的なステップに分割することができます - ネットワーク接続を作成し、イメージをダウンロードしてイメージをファイルに保存します。これらの各ステップの最後に、isCancelled()
をチェックし、その時点ですべての状態を破棄する操作を停止します。
class NetworkFetcherTask extends AsyncTask<String, Void, Void>{
public void doInBackground(String... params){
String url = params[0];
//Open connection if not cancelled
if(isCancelled()){
conn.close();
return;
}
NetworkConnection conn = new NetworkConnection();
//Download the image if not cancelled
if(isCancelled()){
conn.close();
result.discard();
return;
}
NetworkResult result = conn.fetchUrl(url);
conn.close();
//Save the image to a file if not cancelled
if(isCancelled()){
result.discard();
return;
}
File file = new File();
file.dump(result);
}
}
Wohoo!古い質問!決して実現しません –
あなたは何を提案するか、いくつかの例を挙げることができますか? –
あなたは行きます。 isInterrupted()からisCancelled()への変更に注意してください。 isInterrupted()は、スレッド上のメソッドであり、AsyncTaskではありません。謝罪いたします。 –
... – dalle
これは、このような頻繁に良い答えと頻繁に質問です:[Javaで迅速かつクリーンな方法でスレッドを中止する方法](のhttp://のstackoverflow。 com/questions/94011/how-to-abort-a-thread-in-a-fast-and-clean-in-java) –