当Activity返回前台时,AlertDialog是不可见的

我写了一个程序支持下载文件。 在此下载活动中,我启动进度条,然后运行一个线程来执行下载操作。 此线程向UI线程发送消息,以通知已经频繁下载的数量。 在主(UI)线程中,我在接收消息时更新进度条显示。 如果下载进度中出现任何问题,它将发送另一条消息。 当主线程收到消息时,它会停止进度条并popup一个新的AlertDialog以显示错误原因。

这是一个特殊的测试。 下载时,将程序切换到设置。 关闭WIFI / GPRS以关闭网络。

当我回到我的程序时,它应该显示背景ui和popupAlertDialog以显示我想要的原因。 但它只显示背景ui(这意味着主要活动)和背光的半光,就像popup窗口仍在那里一样。 当我第一次按回来时,没有任何反应,除了背光很明亮,就像我关闭了一个popup窗口一样。

我想也许是因为当我启动AlertDialog时,我的活动不在前台。

我试过用:

ActivityManager am = (ActivityManager)Update.this.getSystemService(Context.ACTIVITY_SERVICE); ComponentName cn = am.getRunningTasks(1).get(0).topActivity; 

判断最高活动是否是我的。 但我想展示对话框。 如果用户没有看到活动,当他回到我的活动时,我希望它显示对话框。

实际上,对话框已经显示但对用户不可见,如果您旋转设备,它将变得可见。

如果解除进度对话框并且当活动不在前台时立即显示另一个新对话框,则似乎存在刷新/绘图问题。 在我的测试期间,如果等待完成进度对话框的解除操作然后显示新对话框,则不会发生此类问题。

因此,一种解决方案是首先显示AlertDialog然后关闭ProgressDialog。 这对我的申请有用。

我想, Dialog有一些bug。 我有相同的情况,只有解决方案是通过dialogDismiss(id)解除dialogDismiss(id)对话框并再次通过showDialog(id)显示它。