我有一個EditText和一個AsyncTask類。每當EditText中的文本發生變化時,AsyncTask類的對象就會使用該字符串創建並調用execute()。並且doBackground()被調用,它只有一個函數,它依次具有多個for循環。 AsyncTask的新對象在文本更改時創建。 當文本更改時,舊的Async對象必須被取消,並且新的Async對象應該控制。但是當我調用對象的取消時,舊的繼續運行,似乎調用onPostExecute()。 有沒有辦法避免這種情況。我的意思是,我可以在運行新的asyncTask對象之前徹底殺死/(停止運行)舊的asyncTask對象嗎?Android:AsyncTask取消()問題
編輯 這是我的代碼,
if (getSuggestions1.getStatus() != AsyncTask.Status.RUNNING) {
getSuggestions1.cancel(true);
getSuggestions1 = new GetSuggestions1();
getSuggestions1.execute(new String[] { str });
}
正如你可以打電話取消同一個對象後立即看到我調用execute()。另外,正如我所說的,我有多個循環(6)。我很擔心這個函數isCancelled(),當對象立即初始化時,其中一個for循環返回true。
參見[這](http://stackoverflow.com/a/10882600/1289716)的回答可以幫助你... – MAC
「正如你所看到的,我調用execute()調用取消同一個對象後立即「。它們不是同一個對象。你用同樣的指針調用它,在'new'關鍵字之後它指向一個新的對象。 – Budius
請參閱**在[此Android API文檔頁面]上取消任務**(http://developer.android.com/reference/android/os/AsyncTask.html) – Nate