我的应用程序中有两个服务,有时会通过广播意图相互通信.从发送意图到在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);
    }

将其设置为已导出不会产生任何影响.

推荐答案

看起来sendOrderedBroadcast()不受应用于Android 14中的sendBroadcast()的后台延迟的影响,所以我将改用它.

Android相关问答推荐

无法在Jetpack Compose中显示Admob原生广告

安卓Gradle看不到dagger 柄

更改Jetpack Compose中选定的选项卡底线 colored颜色

在柯特林连续测量网速

Jetpack Compose:带芯片的Textfield

在更改MuableState的值后,Android API 26(Oreo)上的Composable不能重新组合

Jetpack Compose 使用 SavedStateHandle 发送返回结果不适用于 ViewModel 中注入的 SavedStateHandle

Android kotlin 中闪屏 API 执行完成后如何根据身份验证将用户导航到特定屏幕

无法插入 LayoutNode@cc72396 子级,因为它已有父级

是什么导致调用 Firebase 服务器?

需要在按钮 onclick 上从 string.xml 获取值. @Composable 调用只能在@Composable 函数的上下文中发生

如何在 Jetpack Compose 中对齐按钮底部中心?

使用 Kotlin 在 Android 中导航时如何防止 ViewModel 被杀死?

如何在 Delphi 和 Android 上避免 Indy Socket Error #13 Access denied 异常?

Android Studio:按下前缀键:切换 Logcat 格式

在 react native 中设置 react-native-paper 组件的样式

如何将可重用的 ExtendedFloatingActionButton 与可重用的脚手架链接起来

PullRefreshIndicator 与 ScrollableTabRow 重叠

自定义 Recyclerview [Android & Kotlin]

如何在 react native 应用程序中显示复选框?当它在 android 模拟器中可见时