0

我在我的应用程序中扩展了 Application 类。在那个类中,我有一个等待连接更改的 BroadcastReceiver。如果完全连接丢失,我将显示特定活动。但是,如果应用程序不是“焦点”(不在前台),我不想显示该活动。

但是,Application 类没有 onPause 或 onResume 方法。仅当应用程序正在运行时,我如何才能显示此活动?我是否必须在我的所有活动中都有一个 BroadcastReceiver(其中有很多,我不能为所有活动创建扩展活动,因为它们扩展了不同的活动类(活动、ListActivity、FragmentActivity 等)。 是吗?当且仅当应用程序的活动之一在前台时,是否可能只有一个 BroadcastReceiver 采取行动?

4

1 回答 1

1

我会说在您的自定义 Application 类中注册 BroadcastReceivers 是一种反模式。例如,您何时取消注册该接收器?正如您所提到的,Application 类缺少 Activity 具有的生命周期回调(至少其中大部分)。

在您的情况下,我将在 onResume() 回调中的所有活动中注册动态处理连接更改的接收器,并在 onPause() 回调中取消注册它们。很有可能,您的所有活动都可以扩展 FragmentActivity:ListAcitivity 只是一个辅助类,您可以轻松地自己处理所有与列表相关的东西,而 FragmentActivity 只是扩展了基本的 Activity 类。

因此,我建议为您的活动创建一个自定义基类来处理接收器注册,它扩展了 FragmentActivity。你所有的具体活动类都应该扩展这个基类。

于 2012-09-07T12:40:59.080 回答