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