带广播接收器的android alertdialog

带广播接收器的android alertdialog,android,broadcastreceiver,android-alertdialog,progressdialog,Android,Broadcastreceiver,Android Alertdialog,Progressdialog,我的应用程序中有一个网络监视器(使用广播接收器),它做什么?如果手机未连接到互联网,它会弹出一个警报对话框。如果手机重新连接,它会弹出另一个警报,通知用户他已重新联机。问题是,每次监视器看到状态更改时,它都会创建另一个窗口,该窗口堆叠在另一个窗口的顶部。例如,如果手机的数据打开/关闭3次,它将弹出6条消息。如果打开另一个警报对话框,是否有办法取消警报对话框,或者克服这种情况的最佳方法是什么 提前谢谢你,非常感谢你的帮助。 Android新手对话框有一个方法,如果对话框当前可见,则应返回该方法。因

我的应用程序中有一个网络监视器(使用广播接收器),它做什么?如果手机未连接到互联网,它会弹出一个警报对话框。如果手机重新连接,它会弹出另一个警报,通知用户他已重新联机。问题是,每次监视器看到状态更改时,它都会创建另一个窗口,该窗口堆叠在另一个窗口的顶部。例如,如果手机的数据打开/关闭3次,它将弹出6条消息。如果打开另一个警报对话框,是否有办法取消警报对话框,或者克服这种情况的最佳方法是什么

提前谢谢你,非常感谢你的帮助。
Android新手对话框有一个方法,如果对话框当前可见,则应返回该方法。因此,您可以使用它查看对话框是否正在显示,并使用dismissDialog()将其隐藏对话框可能会对用户体验造成很大干扰,因为它需要一个动作来关闭和中断应用程序的自然流程

考虑使用
Toast
进行简单通知,或者如果希望在状态栏中显示通知,可以使用
Notification
。此外,您的应用程序中可以有一些反映当前连接状态的图标,例如绿色表示已连接,红色表示已连接


为了确保只有一个对话框可用,您可以在
活动中创建对话框的
静态
实例,并在显示新对话框之前,如果该对话框不为
,则将其关闭。

添加包含当前可见对话框的变量:

            Alertdialog a;
然后,当您想要显示一个:

if (a!=null) {
    a.cancel();
}
a = yourDialogBuilder.show();

希望这能有所帮助。

我曾考虑过祝酒和通知,但最终还是使用了警报,事实上,警报的静态实例才是最好的选择。有人在你面前提出了同样的建议。我会投票支持你,但我现在还不能:)。谢谢你花时间帮我。