我正在从我的服务发送一个粘性广播,并在我的一项活动中收到它。我使用以下代码发送广播:
Intent i = new Intent();
i.setAction("presence");
i.putExtra("name",xmlContactName);
i.putExtra("fullname", xmlContactName.split("@")[0]);
i.putExtra("presence", presence);
sendStickyBroadcast(i);
我使用此代码在我的活动中接收广播:
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equalsIgnoreCase("presence")){
Contact c = new Contact();
Bundle contact = intent.getExtras();
c.name = contact.getString("name");
c.fullName = contact.getString("fullname");
c.presence = contact.getString("presence");
removeStickyBroadcast(intent);
}
};
}
根据几篇帖子,我发现这就是我需要做的,据我所知,当我的应用程序仍在运行时,这个意图不会再次发送到活动。但是,当我关闭应用程序并再次运行它时,即使没有从我的服务发送它,我也会在我的活动中获得广播。似乎广播仍在某处徘徊,并在重新启动应用程序后再次收到。到目前为止,我发现摆脱它的唯一方法就是重新启动手机。我还在我的活动的 onDestroy() 中取消注册接收器。
我必须做些什么才能完全删除广播,还是我必须学会忍受?