据我了解,一旦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。我已经覆盖了后退按钮,但它似乎并没有工作。 –