我在我的应用程序中扩展了Application类。在那个类中,我有一个等待连接更改的BroadcastReceiver。如果完全连接丢失,我将显示特定活动。但是,如果应用程序不是“焦点”(不在前台),我不想显示该活动。
但是,Application类没有onPause或onResume方法。如果应用程序正在运行,我该如何显示此活动?我是否必须在所有Acitivities中都有一个BroadcastReceiver(其中有很多,我不能为它们创建扩展的Activity,因为它们扩展了不同的Activity类(Activity,ListActivity,FragmentActivity等)。 >当且仅当应用程序的某个活动位于前台时,是否可以只有一个BroadcastReceiver采取行动?
答案 0 :(得分:1)
我会说在自定义Application类中注册BroadcastReceivers是一种反模式。例如,你什么时候取消注册该接收者?正如您所提到的,Application类缺少Activity所具有的生命周期回调(至少大部分都是这样)。
在您的情况下,我会在onResume()回调中的所有活动中注册动态处理连接更改的Receiver,并在onPause()回调中注销它们。很有可能,你的所有活动都可以扩展FragmentActivity:ListAcitivity只是一个帮助类,你可以自己轻松处理所有与列表相关的东西,而FragmentActivity只是扩展了基本的Activity类。
因此,我建议为处理Receiver注册的Activities创建一个自定义基类,从而扩展FragmentActivity。你所有的conrete Activity类都应该扩展这个基类。