多种活动中的动态广播接收器

时间:2017-08-21 18:44:57

标签: android broadcastreceiver android-broadcastreceiver

我对这个典型场景缺乏文档感到困惑。我的Android应用程序中有4个活动--A,B,C和D.我在活动A中注册了一个WiFi P2p广播接收器。一旦连接,用户可以在活动B,C和D之间切换,并可以离开/杀死应用程序按下主页按钮/从最近的应用程序菜单中查杀。我应该在哪里取消注册广播接收器?在单个活动中,您将在onResume()方法中注册并在onPause()中取消注册。多项活动怎么样?我可能不得不为每项活动注册和取消注册,这对我来说似乎是对的。

相关代码:

// helper class method called by Activity A by passing its context.
private void registerReceiver(Context context) {
    context.registerReceiver(p2pBroadcastReceiver, p2pIntentFilter);
}

对不起,如果这听起来太简单,请指导我找到正确的文档/链接!

1 个答案:

答案 0 :(得分:1)

当您开始活动B,C和D时,您可以在相应活动B,C和D的生命周期回调方法中取消注册广播接收器。

例如,在您的活动B中,您可以在活动B的onPause方法中取消注册广播接收器

public class MyActivity extends Activity 
{
private final BroadcastReceiver mybroadcast = new SmsBR();
 public void onPause() 
   {
     super.onPause();
     unregisterReceiver(mybroadcast);
   }
}

即使应用程序被系统或用户杀死,Android Framework仍将调用所有生命周期回调方法。因此,如果您在onPause()中取消注册,它将在活动进入后台或被杀死时被调用。