私はここと同じ状況を抱えています: Android AsyncTask はキャンセル時に停止しません。なぜですか?
数秒後に AsyncTask を強制終了するようにタイマーを設定しました。Android 2.3.5では完全に動作します(設定したタイムアウト後にタスクはキャンセルされます)が、何らかの理由でAndroid 4以降では動作しません)
これは関連するコードです (すべて AsyncTask クラス内にあります)。
private class TaskKiller extends TimerTask {
private AsyncTask<?, ?, ?> mTask;
public TaskKiller(AsyncTask<?, ?, ?> task) {
mTask = task;
}
public void run() {
mTask.cancel(true);
}
}
@Override
protected String doInBackground(Void... nothing) {
// Setting the Task timeout.
Timer timer = new Timer();
timer.schedule(new TaskKiller(this), 3000);
response = HttpRequest(url); // this method makes an HttpPost request.
// This, I think, is where android 4+ is unable to cancel the task (while making the http request). It is perfectly cancelled in 2.3.5, though.
}
@Override
protected void onCancelled() {
Log.e("TASK CANCELED","...");
}
Android 2.3では魅力的に機能しています。
Android 4+で動作させる方法についての手がかりはありますか?