Android启动流程概述

文章目录

  • 启动流程
    • 总体启动流程
    • ServiceManager进程启动Binder线程初始化
    • Activity的启动流程

启动流程

Android启动是一个比较复杂的过程,今天只是粗略罗列一下Android的整体的启动流程,之后会详细就每个流程进行分析。

每天进步一点点。

总体启动流程

  1. 开机按钮
  2. 引导程序BootLoader
  3. Linux内核启动
  4. 启动init进程查找init.rc文件,并解析。
  5. Zygote进程启动
  6. SystemServer进程启动
    1. Binder线程池开启
    2. SystemServiceManager
    3. WindowManagerService
    4. PackageManagerService
    5. ActivityManagerService
      1. Launch引用程序启动。
    6. CameraService
    7. 其他服务

ServiceManager进程启动Binder线程初始化

ServiceManager进程都是通过init进程解析init.rc文件开启的,其启动流程如下:

  1. 启动init进程查找init.rc文件,并解析。
  2. ServiceManager进程启动。
  3. binder_open()打开binder驱动
  4. binder_become_context_manager()向Binder驱动发送指令,申请成为所有服务的管理者
  5. binder_loop()循环,处理client端发来的请求。

Activity的启动流程

  1. launcher点击应用图标。
  2. 向AMS发送启动请求,最用调用ApplicationThread中的scheduleReceiver()方法,ApplicationThread是一个Binder,负责与ams交互。
  3. 切换Handler线程,通过ActivityThread.H发送消息。
  4. handleMessage处理消息。
  5. 调用到handleLaunchActivity()后执行activity的onCreate()方法。

你可能感兴趣的:(Android源码,android)