`
OliveExcel
  • 浏览: 71622 次
文章分类
社区版块
存档分类
最新评论

Android系统PRE_BOOT_COMPLETED广播的准备与发送

阅读更多

碰到个问题, 应用在收到BOOT_COMPLETED广播的时候, 往往已经进入桌面了.

然后有同事提出来: 可以收PRE_BOOT_COMPLETED广播啊.

于是就研究了一下这个广播的发送.

 

========================================

本文地址: http://oliveexcel.iteye.com/blog/2302947

========================================

 

一切从SystemServer.main()开始:

SystemServer.main()

-> SystemServer.run()

-> mPackageManagerService.performBootDexOpt()

-> 其中通过Intent.ACTION_PRE_BOOT_COMPLETED找出相应的ResolveInfo list(可视为package list), 并对其中每一个package执行performBootDexOpt(), 优先处理相应的package(代码大致看了一下, 通过Installer中的socket connect到installd之后, 会执行从dex到ota的转换, 以满足Android ART对其的加载).

-> mPackageManagerService.systemReady()

-> 从时序上, 对接收此广播的package的加载, 要先于systemReady(), 即优先于其他package的加载

-> mActivityManagerService.systemReady()

-> deliverPreBootCompleted()

-> 找到所有接收此广播的Receiver, 并通过Application.FLAG_SYSTEM过滤掉无权限的应用

-> PreBootContinuation.go()

-> broadcastIntentLocked()

-> 完成对该广播的发送

 

综上所述, 该广播是在ActivityManagerService.systemReady()中被发出的.

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    testBOOT_COMPLETED如何在开机时即启动程序

    `ACTION_BOOT_COMPLETED` 是系统内置的一个广播,当设备完成启动,用户界面已经准备就绪时发出。 二、注册Broadcast Receiver 有两种方式注册`testBOOT_COMPLETED` 的Broadcast Receiver: 1. **静态注册**:在...

    实现开机自启动服务

    这是Android系统在完成启动过程后发出的一个广播意图,表明设备已经准备好接收用户交互和应用程序的运行。当设备重启或开机后,系统会发送这个广播,开发者可以注册监听这个广播,以便在接收到时执行相应的操作,...

    BOOT_COMPLETED issue analysis report

    根据给定文件内容,本报告将围绕“BOOT_COMPLETED issue analysis report”这一主题,详细阐述Android系统中与POWER键相关的开机完成(BOOT_COMPLETED)广播事件处理机制,以及为何在特定情况下会出现问题。...

    Android 应用自启动

    这个权限允许应用接收ACTION_BOOT_COMPLETED广播,这是系统启动完成时发送的一个广播。 二、创建BroadcastReceiver 首先,我们需要创建一个BroadcastReceiver来监听ACTION_BOOT_COMPLETED广播。在Receiver类中,...

    开机自启demo(静态注册广播接收器)

    使用ACTION_BOOT_COMPLETED广播还需要在AndroidManifest.xml中声明"android.permission.RECEIVE_BOOT_COMPLETED"权限,否则系统将不会发送这个广播给你的应用。 6. **注意事项**: - 由于Android系统的权限限制和...

    【Android】开机自启动

    ACTION_BOOT_COMPLETED是Android系统发送的广播,表示设备已经完成了启动过程,现在可以安全地执行需要在启动后运行的任务了。 以下是一个简单的BroadcastReceiver示例: ```java public class BootReceiver ...

    Android静态广播的例子

    当设备完成启动过程并达到可交互状态时,系统会发送一个ACTION_BOOT_COMPLETED的广播。`BootCompleteReceiver`就是这样一个接收器,它会在设备启动完成后被激活,执行一些预定义的任务,例如启动服务、更新数据或者...

    android 接收系统启动广播

    在这里,我们检查`intent.getAction()`是否等于`"android.intent.action.BOOT_COMPLETED"`,这是系统启动完成的标志。 然后,为了让我们的BootReceiver能够接收到系统的启动广播,我们需要在AndroidManifest.xml中...

    adb发送广播

    其中,`<ACTION>`是你想要发送的广播意图的动作名称,可以是系统预定义的(如`android.intent.action.BOOT_COMPLETED`)或者自定义的。`<COMPONENT>`是可选的接收者组件名称,`--es`用于添加额外的键值对参数。 3....

    制作android安卓开机自启动的app.zip

    ACTION_BOOT_COMPLETED广播是在系统完成启动后发送的,用于通知开发者系统已经准备好接收应用的请求。在AndroidManifest.xml文件中,你需要声明这个BroadcastReceiver: ```xml <receiver android:name="....

    AutoStart_android源码_AutoStart_

    4. **权限请求**:由于Android系统的安全性,从Android 6.0(API级别23)开始,一些敏感的权限需要在运行时向用户请求,包括`RECEIVE_BOOT_COMPLETED`。因此,你可能需要在代码中检查并请求这个权限。 5. **...

    Android开机自动运行.pdf

    在Android开机时,系统会发送一个名为ACTION_BOOT_COMPLETED的广播,开发者可以通过监听这个广播来实现在开机后自动运行指定的程序。这个过程可以分为以下几个关键步骤: 1. **创建BroadcastReceiver**: 首先,我们...

    android应用开机自启动

    Android系统在启动完成后会发送一个名为ACTION_BOOT_COMPLETED的广播,任何注册了这个广播的接收器都可以接收到这个消息。当我们的应用接收到这个广播时,就可以执行相应的操作,如启动服务或者启动主Activity,达到...

    Android 常用系统广播

    Android系统广播是Android应用开发中一种重要的机制,它允许应用程序接收系统发送的事件通知。这些事件可以是硬件变化、系统状态变化或者用户的某些操作等。以下是根据提供的文件内容整理的Android常用系统广播知识...

    Android开机自启动服务的实现方法

    首先,我们需要创建一个BroadcastReceiver,该接收器会监听系统发出的`ACTION_BOOT_COMPLETED`广播。当设备完成启动时,系统会发送这个广播。以下是一个简单的BootReceiver类的示例: ```java public class ...

    android手机开机自动启动程序源码.pdf

    在Android系统中,开机自启动程序的实现主要是通过BroadcastReceiver监听系统的特定广播事件,比如`ACTION_BOOT_COMPLETED`,然后在接收到这个广播后启动应用程序。下面将详细解释如何实现这一功能。 首先,我们...

    android动态设置开机自动启动程序

    开机启动程序(Boot Start)通常依赖于广播接收器(BroadcastReceiver),监听到ACTION_BOOT_COMPLETED这个系统广播,以此来触发程序的自动启动。 1. 创建BroadcastReceiver: 要实现开机启动,首先我们需要创建一...

    android Activity自启动

    1. **BroadcastReceiver**: 在Android中,我们通常使用BroadcastReceiver来监听系统的广播事件,其中包括ACTION_BOOT_COMPLETED,这是设备启动完成时发出的广播。要实现Activity自启动,首先需要创建一个...

    android系统广播

    5. Intent.ACTION_BOOT_COMPLETED:系统启动完成时的广播 6. Intent.ACTION_CAMERA_BUTTON:按下照相时的拍照按键时发出的广播 7. Intent.ACTION_CLOSE_SYSTEM_DIALOGS:屏幕超时锁屏时的广播 8. Intent.ACTION_...

    Android应用开机时自动启动

    我们可以通过创建一个BroadcastReceiver来监听ACTION_BOOT_COMPLETED广播,这个广播是在系统完成启动并准备好接收用户交互时发送的。 以下步骤介绍了如何实现开机自启动: 1. **创建BroadcastReceiver**:首先,你...

Global site tag (gtag.js) - Google Analytics