作为 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 相关的事件时,除了注册广播之外没有其他好的替代方法。
BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED
,BluetoothA2dp.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
短信接收应用依赖于这些广播。