我的应用程序中有两个服务,有时会通过广播意图相互通信.从发送意图到在Android 13上交付意图的时间是1-2ms(在Pixel4XL上进行了测试).在Android 14上运行的时间是~500ms(在Pixel 6 Pro上进行了测试)!
缓慢的意图传递导致了我的应用程序出现了以前没有的延迟.我知道在Android 14版本中,当应用程序被缓存时,上下文注册的广播被排队,但这是在活跃运行的前台服务和可访问性服务之间.Android 14上的所有意图都变慢了吗?
有人知道这一性能问题可能是什么原因吗?
EDIT:进一步测试,当前台没有活动时,意向似乎延迟了500ms.在前台有活动时不会有延迟.当你离开应用程序时,即使没有关闭它,延迟也会立即出现.
So it appears that intents are slowed down even between foreground services, if there is no activity in the foreground.这个是documented吗?
我能做些什么来防止这种情况发生吗?我使用的是动态注册的接收器:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
registerReceiver(broadcastReceiverInternal, intentFilter, RECEIVER_NOT_EXPORTED);
} else {
registerReceiver(broadcastReceiverInternal, intentFilter);
}
将其设置为已导出不会产生任何影响.