Android NDK开发详解后台任务之隐式广播例外情况

本文详细解释了Android8.0及以上版本对后台隐式广播的限制,列举了不受此限制的特定广播类型,如设备启动、USB事件、蓝牙连接等,并提醒开发者注意相关注意事项和替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android NDK开发详解后台任务之隐式广播例外情况


受 Android 8.0(API 级别 26)后台执行限制的影响,以 API 级别 26 或更高级别为目标的应用无法再在其清单中注册用于隐式广播的广播接收器。不过,有几种广播目前不受这些限制的约束。无论应用以哪个 API 级别为目标,都可以继续为以下广播注册监听器。

注意:尽管这些隐式广播仍在后台运行,但您应避免为其注册监听器。
ACTION_LOCKED_BOOT_COMPLETED、ACTION_BOOT_COMPLETED
豁免的原因这些广播仅在首次启动时发送一次,而且许多应用需要接收此广播以调度作业、闹钟等。
ACTION_USER_INITIALIZE、“android.intent.action.USER_ADDED”、“android.intent.action.USER_REMOVED”
这些广播受特许权限保护,因此大多数普通应用都无法接收它们。
“android.intent.action.TIME_SET”、ACTION_TIMEZONE_CHANGED、ACTION_NEXT_ALARM_CLOCK_CHANGED
当时间、时区或闹钟发生更改时,时钟应用可能需要接收这些广播以更新闹钟。
ACTION_LOCALE_CHANGED
仅在语言区域发生更改时发送,这种情况并不常见。当语言区域发生更改时,应用可能需要更新其数据。
ACTION_USB_ACCESSORY_ATTACHED、ACTION_USB_ACCESSORY_DETACHED、ACTION_USB_DEVICE_ATTACHED、ACTION_USB_DEVICE_DETACHED
如果某个应用需要了解这些与 USB 有关的事件,除了为广播进行注册,目前还没有很好的替代方法。
ACTION_CONNECTION_STATE_CHANGED、ACTION_CONNECTION_STATE_CHANGED、ACTION_ACL_CONNECTED、ACTION_ACL_DISCONNECTED
如果应用接收到针对这些蓝牙事件的广播,则用户体验不太可能受到影响。
ACTION_CARRIER_CONFIG_CHANGED、TelephonyIntents.ACTION_*_SUBSCRIPTION_CHANGED、“TelephonyIntents.SECRET_CODE_ACTION”、ACTION_PHONE_STATE_CHANGED、ACTION_PHONE_ACCOUNT_REGISTERED、ACTION_PHONE_ACCOUNT_UNREGISTERED
OEM 电话应用可能需要接收这些广播。
LOGIN_ACCOUNTS_CHANGED_ACTION
有些应用需要了解登录帐号的更改,以便为新帐号和已更改的帐号设置调度的操作。
ACTION_ACCOUNT_REMOVED
具有帐号可见性的应用会在帐号被移除后收到此广播。如果应用只需要对此帐号更改执行操作,则强烈建议应用使用此广播,而不是使用已弃用的 LOGIN_ACCOUNTS_CHANGED_ACTION。
ACTION_PACKAGE_DATA_CLEARED
仅在用户明确清除“设置”中的数据时发送,因此广播接收器不太可能对用户体验造成显著影响。
ACTION_PACKAGE_FULLY_REMOVED
某些应用可能需要在其他软件包被移除时更新其存储的数据;对于这些应用来说,除了为此广播进行注册,没有很好的替代方法。

注意:其他与软件包相关的广播(例如 ACTION_PACKAGE_REPLACED)未能免受新限制的约束。这些广播很常见,豁免的话可能会影响性能。

ACTION_NEW_OUTGOING_CALL
应用需要接收此广播,以在用户拨打电话时采取相应操作。

ACTION_DEVICE_OWNER_CHANGED
此直播的发送频率不高;某些应用需要接收它来了解设备的安全状态已发生更改。

ACTION_EVENT_REMINDER
由日历提供程序发送,以向日历应用发布事件提醒。由于日历提供程序并不知道日历应用是什么,因此此广播必须是隐式的。

ACTION_MEDIA_MOUNTED、ACTION_MEDIA_CHECKING、ACTION_MEDIA_UNMOUNTED、ACTION_MEDIA_EJECT、ACTION_MEDIA_UNMOUNTABLE、ACTION_MEDIA_REMOVED、ACTION_MEDIA_BAD_REMOVAL
这些广播会在用户与设备的物理互动(安装或移除存储卷)或启动初始化(可用卷装载时)过程中发送,并且通常受用户控制。

SMS_RECEIVED_ACTION、WAP_PUSH_RECEIVED_ACTION
短信接收者应用需要依赖这些广播。

本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。

最后更新时间 (UTC):2020-01-13。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五一编程

程序之路有我与你同行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值