Android延迟广播

时间:2019-05-29 14:20:37

标签: android xamarin.android broadcastreceiver

我有一个广播接收器,正在听SCREEN_ON和SCREEN_OFF动作。其原理是,在按要求的次数后,应用程序将执行某些操作。动作已正确接收并正确处理,该部分效果很好。

问题在于有时似乎会有延迟,例如我们观察到同时执行10个操作。似乎广播有时会被延迟,然后很多让大家说“排队”的广播都被接连接收。

广播接收器绑定到始终运行的服务,而与强制关闭活动无关。 IntentFilter的优先级为“ 999”,您可以在下面看到该过滤器的设置,这是在服务的onStartCommand中完成的。

if (_screenOnOffBroadcast == null)
{
     _screenOnOffBroadcast = new ScreenOnOffBroadcast(Config);
     var filter = new IntentFilter(Intent.ActionScreenOff);
     filter.AddAction(Intent.ActionScreenOn);
     filter.Priority = 999;
     RegisterReceiver(_screenOnOffBroadcast, filter);
}

我想我有两个问题,首先是广播总是即时的吗?其次,对于Intent动作“ SCREEN_ON”和“ SCREEN_OFF”,什么会触发它们,我知道android内部存在,但是如果用户收到10条消息,则会将屏幕打开/关闭十次。我一直在努力尝试并更好地理解此问题,因为很难重新创建广播的延迟。我可以共享更多代码,但认为没有必要。感谢您对此的任何帮助或建议。

0 个答案:

没有答案