我有一個從活動A執行的Asynctask B. 在該B的post執行中,在某種情況下,B可能會創建一個自己的新實例並執行它。取消AsyncTask未運行調用onCancelled?
我所做的是將AsyncTask聲明作爲全局內部的B並覆蓋B的onCancelled以取消創建onpostexecute的新實例。
so onDestroy of Activity A b.cancel()也將取消執行onPostExecute的任何AsyncTask。 currentPlansAsync的
@Override
protected void onCancelled()
{
if(currentPlansAsync != null)
{
currentPlansAsync.cancel(true);
}
super.onCancelled();
}
,新實例稱爲onPostExecute如下:
private void processAfterFailure()
{
if(this.counter < 3)
{
ProgressDialog progressDialog =
GeneralUtils.showProgressDialog(parentActivity, parentActivity.getResources().getString(string.WaitDialogTitle),
parentActivity.getResources().getString(string.WaitDialogMessage));
this.counter++;
currentPlansAsync = new CurrentPlansAsync(parentActivity, application, progressDialog, application.planBL, this.counter);
currentPlansAsync.execute();
}
else
{
Toast.makeText(parentActivity, parentActivity.getResources().getString(string.SERVICE_ERROR), Toast.LENGTH_LONG).show();
}
}
我的問題是,如果的AsyncTask B已停止執行,並已執行另一個的AsyncTask C和活動前進到的onDestroy和B被取消(b.cancel(true);
) 將onCancelled在B類中被覆蓋被稱爲??
這讓我確保我取消從活動執行的AsyncTask,並從該的AsyncTask
完成後您無法取消任務。但是你可以公開'onCancelled'方法並改爲調用它。 – vorrtex 2013-04-30 15:17:34