5 AMS 服务启动过程

从上面一路跟下来,是不是很兴奋?那么我们继续往下走,分析我们比较关注的 AMS 服务。

启动入口,
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java

android pms 安装apk流程_系统源码剖析


这个是系统启动服务的代码,于是我们的 AMS 就是调用的 onStart 方法,我们看下具体代码。

android pms 安装apk流程_java_02


这里我们要看下 AMS 的构造函数,因为这个 Lifecycle 构造的时候创建了 AMS。

android pms 安装apk流程_构造函数_03


获取主线程,还有就是获取 SystemUI 的信息,这里是为了调用创建一些系统框。这里创建了权限的一个管理服务,

android pms 安装apk流程_java_04


初始化前后台的广播队列,setSystemProcess 创建一些内部服务,这里我们常见的 meminfo,permission 就在这里,调试时候经常会用到。

在创建的过程中,WMS 会决定是否需要显示,推动显示机制,这里主要依赖判断是否系统
就绪。窗体创建完成后,会进入这个 WMS.enableScreenAfterBoot,让我们的开机动画退出去(SystemProperties.set(“service.bootanim.exit”, “1”);),然后 AMS 发送 BOOT 完成的广播
( mActivityManager.bootAnimationComplete();),系统正式起来,绘制界面。

从上面一路跟下来,是不是很兴奋?那么我们继续往下走,分析我们比较关注的 AMS 服务。

启动入口,
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java

android pms 安装apk流程_系统源码剖析


这个是系统启动服务的代码,于是我们的 AMS 就是调用的 onStart 方法,我们看下具体代码。

android pms 安装apk流程_java_02


这里我们要看下 AMS 的构造函数,因为这个 Lifecycle 构造的时候创建了 AMS。

android pms 安装apk流程_构造函数_03


获取主线程,还有就是获取 SystemUI 的信息,这里是为了调用创建一些系统框。这里创建了权限的一个管理服务,

android pms 安装apk流程_java_04


初始化前后台的广播队列,setSystemProcess 创建一些内部服务,这里我们常见的 meminfo,permission 就在这里,调试时候经常会用到。

在创建的过程中,WMS 会决定是否需要显示,推动显示机制,这里主要依赖判断是否系统
就绪。窗体创建完成后,会进入这个 WMS.enableScreenAfterBoot,让我们的开机动画退出去(SystemProperties.set(“service.bootanim.exit”, “1”);),然后 AMS 发送 BOOT 完成的广播
( mActivityManager.bootAnimationComplete();),系统正式起来,绘制界面。