android– 每次启动服务时BroadcastReceiver都会收到

android– 每次启动服务时BroadcastReceiver都会收到,第1张

概述我在服务上有一个动态注册的BroadcastReceiver.它将AudioManager.RINGER_MODE_CHANGED_ACTION作为IntentFilter.每次启动服务时,我都会在onReceive()方法中获取日志消息.之后它正常工作.每次启动服务时我都不希望它接收一次.你能告诉我我在这里失踪了吗?receiver=newBroadcas

我在服务上有一个动态注册的broadcastReceiver.它将AudioManager.RINGER_MODE_CHANGED_ACTION作为IntentFilter.每次启动服务时,我都会在onReceive()方法中获取日志消息.之后它正常工作.每次启动服务时我都不希望它接收一次.你能告诉我我在这里失踪了吗?

    receiver=new broadcastReceiver(){        @OverrIDe        public voID onReceive(Context context, Intent intent) {             Log.d("zil", "degisti");        }    };    IntentFilter filter=new IntentFilter(                    AudioManager.RINGER_MODE_CHANGED_ACTION);    registerReceiver(receiver,filter);

解决方法:

您感兴趣的意图AudioManager.RINGER_MODE_CHANGED_ACTION是“粘性的”.这意味着系统始终保持发送的最后一个广播,并且每当注册了对该Intent感兴趣的broadcastReceiver时,它立即接收它.这是一个非常有用的功能,但有时它不是你想要的;-)

我假设你只对实际的“改变”事件感兴趣.在这种情况下,您需要忽略“当前”事件并仅监听将来发生的任何事件.幸运的是,有一个解决方案:

在’onReceive()’中执行以下 *** 作:

if (isInitialStickybroadcast()) {    // Ignore this one as we aren't interested in the current state} else {    Log.d("zil", "degisti");    // Do whatever you want to do with the event here}
总结

以上是内存溢出为你收集整理的android – 每次启动服务时BroadcastReceiver都会收到全部内容,希望文章能够帮你解决android – 每次启动服务时BroadcastReceiver都会收到所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1106023.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存