據我瞭解,一旦AsyncTask被調用,結果將被改爲null,並且AsyncTask被取消。有沒有辦法保留結果並將其傳遞給onPostExecute(String result)
。 developer.android.com
表示不要明確地調用這些函數。在取消AsyncTask時執行onPostExecute
的應用基本上掃描圖像,而如果用戶取消異步任務,我想異步任務,以顯示已掃描圖像。所以結果不應該設置爲null。
這可能實現嗎?如果是,如何?
class openCVOperation extends AsyncTask<String, String, String>{
private MainActivity context = null;
/*lots of variables here*/
public openCVOperation(MainActivity context1) {
context = context1;// set context from mainActivity
// which
// inherits Activity super class.
// Needed
// for accessing widgets.
}
@Override
protected void onPreExecute() {
pd = new ProgressDialog(context);
pd.setIndeterminate(false);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMax(100);
pd.setCancelable(true);
pd.setCanceledOnTouchOutside(false);
pd.setMessage("Starting up");
pd.show();
}
@Override
protected String doInBackground(String... params) {
publishProgress("Finding path to Storage...");
path = Environment.getExternalStorageDirectory();
p = path.getAbsolutePath();
p=p+"/location";
rm(p);// this has a loop!
return null;
}
@Override
protected void onCancelled()
{
System.out.println("In onCancelled");
super.onCancelled();
}
@Override
protected void onPostExecute(String result) {
pd.dismiss();
/*post execute stuff*
}
rm(p)
有一個循環,所以我嘗試使用isCancelled()
作爲條件,但沒有奏效。
你可以發佈你的代碼嗎?你在哪裏取消你的asynctask? – Raghunandan
我取消了UI中的asynctask。我已經覆蓋了後退按鈕,但它似乎並沒有工作。 –