这三个是Android系统中与系统启动相关的广播事件,它们的关系是:
-
PRE_BOOT_COMPLETED:是在系统启动前发送的广播事件,通知应用程序在系统启动前完成的操作。这个广播在Android 7.0及以上版本中被禁用,因为Google建议开发者不要在系统启动前执行操作。
-
BOOT_COMPLETED:是在系统启动完成后发送的广播事件,通知应用程序系统已经启动完成。该广播事件是常用的,开发者可以在该广播事件接收器中执行一些初始化操作,比如启动一个服务或者发送一条通知。注意:需要在AndroidManifest.xml文件中声明该广播事件接收器。
-
LOCKED_BOOT_COMPLETED:是在系统启动完成并且设备的屏幕已经锁定后发送的广播事件。该广播事件在安全方面有一定的应用场景,比如可以在该广播事件接收器中启动一个服务,检查设备是否被盗窃,或者执行一些安全操作。
使用场景:
1. PRE_BOOT_COMPLETED的使用场景:
(1)在系统启动前初始化应用程序数据
在应用程序启动时,将数据保存在SharedPreferences中并在PRE_BOOT_COMPLETED中读取 这些数据。在系统启动时,应用程序可以快速加载数据。
(2)在系统启动前执行一些自定义脚本
如果您需要在系统启动前执行一些任务,例如为设备设置一些属性或者在启动时调整一些系统设置,那么可以在PRE_BOOT_COMPLETED广播接收器中执行这些操作。
(3)启动一个服务或者应用程序
您可以在PRE_BOOT_COMPLETED广播接收器中启动一个服务或者应用程序。这些服务或应用程序可以在系统启动完成后继续运行,从而保持设备处于活动状态。
需要注意的是,使用PRE_BOOT_COMPLETED要特别小心,在系统启动时执行重要的任务时,会造成设备系统的故障。
2.BOOT_COMPLETED的使用场景:
(1)启动自启动应用
通过注册BOOT_COMPLETED接收器,应用程序可以在设备启动完成后自动启动,而无需用户手动打开它。这对于需要始终运行的应用程序非常有用,例如音乐播放器或定位应用程序等。
(2)定期执行后台任务
有些应用需要在后台定期执行某些任务,例如备份数据或下载更新。通过注册BOOT_COMPLETED接收器,应用程序可以在设备启动完成后启动服务来执行这些任务。
(3)提醒用户
有时应用程序需要在特定时间或日期提醒用户执行某些操作。通过注册BOOT_COMPLETED接收器,应用程序可以在设备启动完成后安排闹钟或发送通知来提醒用户。例如,日历应用程序可以在设备启动后安排定期提醒用户查看其日程表。
3. LOCKED_BOOT_COMPLETED的使用场景:
(1)启动受保护的服务
如果您的应用程序具有需要保护的服务(例如,需要用户解锁设备才能访问),则可以使用LOCKED_BOOT_COMPLETED广播通知您的应用程序在设备启动后启动该服务。
(2)初始化应用程序
您的应用程序可能需要在设备启动之后执行一些初始化操作。例如,您可能需要从数据库中加载数据或设置默认选项。您可以使用LOCKED_BOOT_COMPLETED广播来通知您的应用程序在设备启动后执行这些任务。
(3)更新通知
如果您的应用程序有一些需要在设备启动后更新的通知,您可以注册LOCKED_BOOT_COMPLETED广播并在设备启动后更新它们。
(4)启动活动
您的应用程序可能需要在设备启动后启动一个活动,以便用户可以开始使用它。您可以使用LOCKED_BOOT_COMPLETED广播来通知您的应用程序在启动后打开这个活动。
注意点:
1.LOCKED_BOOT_COMPLETED:在设备启动完成且用户已经解锁设备后发送。使用此常量接收广播时,请注意检查设备的锁屏状态。本人在Android 11系统使用这个广播发现需要使用这个属性android:directBootAware=“true”,否则接收不到这个广播,且必须为内置应用。
2.PRE_BOOT_COMPLETED:在设备引导完成和系统服务启动之前发送。使用此常量接收广播时,请注意您的接收器应该是单独的进程,并且不可与任何其他进程共享。
3.BOOT_COMPLETED:在系统启动完成后发送。使用此常量接收广播时,请注意你的接收器应该不包含任何阻塞操作或需要很长时间才能执行的操作。
又到了说再见的时候了,有问题下方评论一起学习讨论,共同进步!!