我在我的應用程序中實現了AsyncTask,以正確地從互聯網下載文件並將數據放入本地數據庫。文件正在下載,一切正常。我也檢查是否有互聯網連接,如果沒有任何,我在我的doInBackground方法返回0,什麼導致我的AsyncTask調用「onPostExecute」方法,並且一切都按照它應該。但是我看到,如果互聯網連接不好,例如我處於我的WiFi範圍的邊緣,AsyncTask有時會下載文件幾分鐘。這不是我想要的。所以我在onPreExecute方法處理程序中實現了我的AsyncTask。如何正確處理Android中的AsyncTask取消?
isFreezed = new Handler();
isFreezed.postDelayed(new Runnable() {
@Override
public void run() {
if (!isCancelled() && getStatus() != AsyncTask.Status.FINISHED){
cancel(true);
//Log.i("callingActivity", "Zbyt wolne połączenie, anulowanie.");
onPostExecute((long) 0);
}
}
},8000);
我取消我的AsyncTask。我看到,當我取消它時,onPostExecute方法沒有執行,所以我手動調用它。這就是我的問題,谷歌說,它不應該手動調用。 我的思維方式很好,把處理程序取消任務,並繼續與我的應用程序是一個很好的做法,或者我應該以其他方式嗎? 我是對的,當我將取消AsyncTask,它的onPostExecute方法不會被調用?
有上要取消的任務,被炒魷魚的異步任務的onCancelled()重寫。 – kha 2014-10-10 10:27:13