对于这种典型情况的文档缺乏,我感到困惑。我的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);
}


抱歉,如果听起来太简单了,请直接转到正确的文档/链接!

最佳答案

在启动活动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框架仍将调用所有生命周期回调方法。因此,如果您在onPause()中取消注册,则当活动进入后台或被杀死时,它将被调用。

关于android - 多种 Activity 中的动态广播接收器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45803761/

10-09 07:54