在我的主要活动中,我有一个AsyncTask
正在postExecute()
更新ListView.
现在,postExecute()
被调用之前,如果我的活动由于任何原因被摧毁AyncTask
的状态。 onPostExecute()
UI更新将引发异常。
我想到的一种方法是取消onDestory()
中的ayncTask。但是如果asynctask在postExecute中,则在destroy上调用如何处理它。
答案 0 :(得分:1)
但是如果asynctask在postExecute中,则在destroy上调用如何处理它。
这种情况根本不可能发生,因为两个方法都在UI线程上调用,这意味着一个方法在另一个被调用之前完成。
当您的用户界面不再可用时(onDestroy
),请取消AsyncTask
。
在onPostExecute
中,您可以检查AsyncTask
的取消状态。您还可以在isFinishing
上查看Activity
。
答案 1 :(得分:-1)
你可以如何处理这样的代码异常,你可以在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;
}
}