我对这个典型场景缺乏文档感到困惑。我的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);
}
对不起,如果这听起来太简单,请指导我找到正确的文档/链接!
答案 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()中取消注册,它将在活动进入后台或被杀死时被调用。