我写了一个程序支持下载文件。在此下载活动中,我启动进度条,然后运行一个线程来执行下载操作。此线程向UI线程发送消息,以通知已经经常下载的数量。在主(UI)线程中,我在接收消息时更新进度条显示。如果下载进度中出现任何问题,它将发送另一条消息。当主线程收到消息时,它会停止进度条并弹出一个新的AlertDialog以显示错误原因。
这是一个特殊的测试。下载时,将程序切换到设置。关闭WIFI / GPRS以关闭网络。
当我回到我的程序时,它应该显示背景ui和弹出AlertDialog以显示我想要的原因。但它只显示背景ui(这意味着主要活动)和背光半亮,就像弹出窗口仍在那里一样。当我第一次按回时,没有任何反应,除了背光是明亮的,就像我关闭了一个弹出窗口。
我想也许是因为当我启动AlertDialog时,我的活动不在前台。
我试图使用:
ActivityManager am = (ActivityManager)Update.this.getSystemService(Context.ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
判断最高活动是否是我的。但我想展示对话框。如果用户没有看到活动,当他回到我的活动时,我希望它显示对话框。
答案 0 :(得分:3)
事实上,对话框已经显示但对用户不可见,如果您旋转设备,它将会显示。
如果关闭进度对话框并且当活动不在前台时立即显示另一个新对话框,则似乎存在刷新/绘图问题。 在我的测试期间,如果等待完成进度对话框的解除操作然后显示新对话框,则不会发生此类问题。
所以一个解决方案是首先显示AlertDialog然后关闭ProgressDialog。这适用于我的申请。
答案 1 :(得分:0)
我认为Dialog
中存在一些错误之王。我有相同的情况,只有解决方案是dialogDismiss(id)
解除当前对话,并由showDialog(id)
再次显示。