gpt4 book ai didi

java - 如何从内存中删除粘性广播?

转载 作者:行者123 更新时间:2023-12-01 13:57:45 25 4
gpt4 key购买 nike

我正在从我的服务发送粘性广播,并在我的一项 Activity 中收到它。我使用以下代码发送广播:

Intent i = new Intent();
i.setAction("presence");
i.putExtra("name",xmlContactName);
i.putExtra("fullname", xmlContactName.split("@")[0]);
i.putExtra("presence", presence);

sendStickyBroadcast(i);

我使用此代码在我的 Activity 中接收广播:

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);
}
};
}

根据几篇文章,我发现这就是我需要做的全部,并且据我所知,当我的应用程序仍在运行时,此 Intent 不会再次发送到 Activity 。但是,当我关闭应用程序并再次运行它时,即使没有从我的服务发送广播,我也会在我的 Activity 中收到广播。似乎广播仍在某处徘徊,并且在重新启动应用程序后再次收到。到目前为止,我发现摆脱它的唯一方法就是重新启动手机。我还在 Activity 的 onDestroy() 中取消注册接收器。
我需要采取什么措施来完全删除广播,还是我必须学会忍受它?

最佳答案

即使您的应用程序消失,粘性广播仍然存在。摆脱它们的唯一可靠方法是通过手机重启。您无法自己手动使其消失。这是粘性广播的预期行为。它应该保留下来,以便任何注册自己接收此广播的应用程序都应该收到该广播的最新缓存版本,即使原始应用程序已死亡并消失。如果您想要没有这种行为的东西,那么只需使用常规广播即可。

进一步阅读:

关于java - 如何从内存中删除粘性广播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19535107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com