如何关闭带有异步任务的进度对话框,并避免“您的活动是否运行错误?”

时间:2019-03-12 14:49:36

标签: java android android-asynctask progressdialog

我无法避免出现“无法添加窗口-令牌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();}

并且活动在可以运行之前完成,用户将陷入一个对话框,而该对话框将永远不会消失。

我想念什么吗?如何防止此错误,但同时确保对话框将启动并被关闭?

谢谢!

0 个答案:

没有答案