1

AsyncTasks我有一个使用进度对话框的 android 应用程序。
我的问题是,尽管我设法取消了AsynchTasks我得到的

Activity ... has leaked window 

这是因为即使我设法取消了 asynchTask 我还没有取消进度对话框。
我如何保证取消 asynctasks 进度对话框?

@SuppressWarnings("rawtypes")
public OnCancelListener buildOnCancelListener(final AsyncTask asyncTask) {
return new DialogInterface.OnCancelListener() {
@Override
public void onCancel(final DialogInterface dialogInterface) {
    asyncTask.cancel(true);
    }
};
}
4

2 回答 2

3

把方法和yourDialog.dismiss();. 如果您使用的是 AsyncTask.cancel(...),onCancelled() 将在 doInBackground() 而不是 onPostExecute() 之后调用。onCancelledonPostExecute

在此处记录。

于 2013-07-15T19:07:55.003 回答
0

Activity这是因为您试图在不首先关闭对话框的情况下移至新的。

你可以试试这个:

  • 使用publishProgress()onProgressUpdate()inAsyncTask更新ProgressDialog.
  • onProgressUpdate()尝试更新对话框之前测试对话框是否可见/有效。这不会带来任何同步问题,因为onProgressUpdate在活动的同一 UI 线程中运行。
  • dialog.dismiss()同时调用onCanceled()onPostExecute()
  • 如果您的对话框已经可见,请务必调用dialog.dismiss()Activity.onStop()

打电话dialog.dismiss()onCancel()不能保证问题得到解决,因为

于 2013-07-17T02:29:27.317 回答