2012-09-07 53 views
0

我在应用程序中扩展了应用程序类。在那个类中,我有一个等待连接更改的BroadcastReceiver。如果完整连接丢失,则显示特定的活动。但是,如果应用程序不是“焦点”(不在前台),我不想显示该活动。Android - 在未运行时处理应用程序连接更改

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

回答

1

我想说在您的自定义Application类中注册BroadcastReceivers是一种反模式,例如,你什么时候注销这个接收器?正如你所提到的那样,Application类缺少一个Activity的生命周期回调(至少其中大部分是)

在你的情况中,我会注册Receiver来处理连接chan在onResume()回调中的所有活动中动态创建,并在onPause()回调中注销它们。很可能,所有活动都可以扩展FragmentActivity:ListAcitivity只是一个辅助类,你可以轻松地处理所有与列表相关的东西,而FragmentActivity只是扩展了基本的Activity类。

因此,我建议为处理Receiver注册的活动创建一个自定义基类,该注册扩展了FragmentActivity。你所有的conrete Activity类都应该扩展这个基类。

相关问题