我有一个Android应用程序,它使用带有进度对话框的AsyncTasks
我的问题是,虽然我设法取消了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);
}
};
}
答案 0 :(得分:3)
将yourDialog.dismiss();
放入onCancelled
方法和onPostExecute
。如果您使用的是AsyncTask.cancel(...),则在doInBackground()之后将调用onCancelled()而不是onPostExecute()。
记录在案here。
答案 1 :(得分:0)
这是因为你试图转移到新的Activity
而不首先解除对话。
你可以试试这个:
publishProgress()
中使用onProgressUpdate()
和AsyncTask
来更新ProgressDialog
。onProgressUpdate()
测试中,在尝试更新对话框之前,对话框是可见/活动的。这不会带来任何同步问题,因为onProgressUpdate
在活动的同一UI线程中运行。dialog.dismiss()
和onCanceled()
上致电onPostExecute()
。dialog.dismiss()
中致电Activity.onStop()
。在dialog.dismiss()
中调用onCancel()
并不能保证自