我有一个 Receiver 子类在 Fragment 和一个随附的 Service 中,该 Service 向广播接收器发送一条消息,以显示不确定地等待某些条件的 toast。我还有一个布尔值来告诉我接收器是否正在运行。接收者在点击列表项时注册,如图所示。
if(!ReceiverON){
getActivity().registerReceiver(new Receiver(), filter);
ReceiverON=true;
}
一旦片段被销毁,我想取消注册它。我知道文档说它应该在 OnPause 中取消注册,但在 onPause 期间,我将接收器与服务结合使用来保持敬酒。在我的 On Destroy I Unregister 中如下
if( ReceiverON){
ReceiverON=false;
Log.i("Log on Destroy", "Receiver ON...Destroying");
getActivity().unregisterReceiver(new Receiver());
if(getActivity().startService(ServiceIntent) != null) {
getActivity().stopService(ServiceIntent);
}
}
如果我按照上述操作,应用程序会因 IllegalArgumentException 崩溃:接收方未在 Unregister 行上注册。如果我注释掉该行,我会收到关于未取消注册我的接收器的错误日志。我该如何解决这个问题?