在我的应用程序中,我在一个长时间运行的模态后台进程中显示一个对话框。
当 android 从后台任务返回时,此对话框将被关闭。
final ProgressDialog progressDialog = ProgressDialog.show(activity, "", "Doing something long running", true, true);
new Thread(new Runnable() {
public void run() {
someLongRunningCode(); // (not using AsyncTask!)
activity.runOnUiThread(new Runnable() {
public void run() {
progressDialog.dismiss();
}
});
}
}).start();
但是,现在,当用户在后台进程仍在运行时旋转他的设备时,将重新创建活动,因此,进度对话框与活动分离。
当长时间运行的过程完成后,android 显然会尝试隐藏(现在分离的)进度对话框,然后导致异常:java.lang.IllegalArgumentException: View not attached to window manager
.
有什么方法可以检查关闭对话框是否安全?
编辑:或者更好的是,有没有办法将现有对话框附加到新创建的活动?
一个新的克隆对话框也可以。