[英]Android: How to retain AsyncTask instance when Activity gets destroyed?
[英]state of AsyncTask when the activity gets destroyed
在我的主要活動中,我運行了一個AsyncTask
,它在postExecute()
更新了ListView.
現在擺在postExecute()
如果我的行為被因任何原因會是什么狀態被破壞被稱為AyncTask
。 onPostExecute()
UI更新將引發異常。
我認為的一種方法是取消onDestory()
的ayncTask。 但是如果asynctask在postExecute中時,銷毀時將調用如何處理它。
但是如果asynctask在postExecute中時,銷毀時將調用如何處理它。
這種情況根本不可能發生,因為這兩個方法都是在UI線程上調用的,這意味着一個方法在另一個方法被調用之前就已經完成。
當您的UI不再可用時(在onDestroy
),請取消AsyncTask
。
在onPostExecute
您可以檢查AsyncTask
的取消狀態。 您還可以在Activity
上檢查isFinishing
。
您如何處理這樣的代碼異常,您可以在AsyncTask中處理異常
public abstract class ExceptionAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
private Exception exception=null;
private Params[] params;
@Override
final protected Result doInBackground(Params... params) {
try {
this.params = params;
return doInBackground();
}
catch (Exception e) {
exception = e;
return null;
}
}
abstract protected Result doInBackground() throws Exception;
@Override
final protected void onPostExecute(Result result) {
super.onPostExecute(result);
onPostExecute(exception, result);
}
abstract protected void onPostExecute(Exception exception, Result result);
public Params[] getParams() {
return params;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.