据我了解,一旦调用 AsyncTask,结果将更改为 null 并取消 AsyncTask。有没有办法保留结果并将其传递给onPostExecute(String result)
. developer.android.com
表示不要显式调用这些函数。
该应用程序基本上扫描图像,如果用户取消异步任务,我希望异步任务显示到目前为止扫描的图像。所以结果不应该设置为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()
作为条件,但这不起作用。