我无法避免出现“无法添加窗口-令牌android.os.BinderProxy无效;您的活动正在运行吗?”在进度对话框中使用异步任务时出现异常。
final ProgressDialog nDialog = new ProgressDialog(MainActivity.this);
nDialog.setMessage("Loading...");
nDialog.setIndeterminate(false);
nDialog.setCancelable(false);
if(!isFinishing()){nDialog.show();}
然后我继续:
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Run code while showing progress dialog
ndialog.dismiss
}
}, 1000);
我开始理解,偶尔会遇到异常,因为在访问ndialog时,该活动将完成。因此,解决方案似乎是更改ndialog。
活动结束(很少发生)后显示对话框的最初问题已由
解决。if(!isFinishing()){nDialog.show();}
我正在考虑将相同的代码用于nDialog.dismiss。但是问题是,如果我这样做:
if(!isFinishing()){nDialog.dismiss();}
并且活动在可以运行之前完成,用户将陷入一个对话框,而该对话框将永远不会消失。
我想念什么吗?如何防止此错误,但同时确保对话框将启动并被关闭?
谢谢!