java – 检查是否可以安全地关闭对话框
发布时间:2020-12-14 19:37:22 所属栏目:Java 来源:网络整理
导读:在我的应用程序中,我在长时间运行的后台进程中显示一个对话框,这是一个模态. android从后台任务返回时,该对话框被解除. final ProgressDialog progressDialog = ProgressDialog.show(activity,"","Doing something long running",true,true);new Thread(new
在我的应用程序中,我在长时间运行的后台进程中显示一个对话框,这是一个模态.
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(); 但是,现在,当用户在后台进程仍在运行时旋转其设备时,将重新创建活动,因此,progressdialog将从活动中分离出来. 编辑:或者更好的是,有没有办法将现有的对话框附加到新创建的活动? 解决方法
抓住异常并忽略它. Android决定在轮换时重新启动活动会使线程有一些奇怪的例外情况.但是你想要的最终结果是没有显示对话框.如果您只是捕获异常,则不会显示任何对话框.所以你很好.
如果您没有为横向和纵向使用单独的布局/绘图,则可以在清单中覆盖活动中的configChange,这样它就不会破坏活动(它仍将正确旋转并为您调整所有内容的大小).这样,同一个对话框就会出现,你不应该得到异常.另一个选项需要在onSaveInstanceState和onRestoreInstanceState上进行大量的工作,如果线程在此期间实际完成,则需要非常小心时序问题.旋转思想的整个重新创建活动不适用于多线程. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |