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

Android和Rust,OpenSSL交叉编译在ARM V7上链接失败

react 本机生成失败,出现异常.错误:无法确定';<;宏/>;的类型

如何隐藏OutlinedTextField边框上的提示标签

Visual Studio 2022,毛伊岛,Android Emulator:无法更改内存量

AndroidX Media3 迁移指南

我需要在房间数据库中保留旧的自动迁移行吗?

kotlin中&&和and的区别

如何将DrawableId参数传递给XML布局?

Android Studio 在 list 文件中已经声明了活动类,但仍出现无法找到明确的活动类的错误

具有数据库和升级潜力的移动应用程序开发(Android)供朋友使用

设置背景图片组成Column

如何在 Jetpack Compose 中创建无限pager

如何在 Jetpack Compose 中设置卡片高度

在 Jetpack Compose 中单击时更改表面项目的背景 colored颜色

如何在 Android 应用程序未激活/未聚焦时显示视图?

如何将设备屏幕位置转换为发送事件位置?

优化 Room 数据库迁移

firebase-messaging和firebase-inappmessaging-display之间有什么区别?

如何将文本组合放在行中,一个具有可变宽度的组合

IconButton 中可绘制的图标是黑色的,尽管它是白色的