• 第一阶段是Linux的启动: Bootloader,Kernel,Driver等
  • 第二阶段是真正的Android的启动

整体流程概括为:启动BootLoader->加载系统内核->启动Init进程->启动Zygote进程->启动Runtime进程->启动本地服务->启动Home Launcher

 

Android启动生命周期流程

第一步:启动Linux

  • Bootloader
  • Kernel

第二步:Android系统启动

  1. Android从Linux系统启动有4个步骤;
  2. init进程启动
  3. Native服务启动
  4. System Server,Android服务启动
  5.  Home启动

 

第三步:应用程序启动

运行PackageManager

 

流程说明

1. Android的servicemanager文件位于/system/bin/servicemanager中,在系统启动一开始会通过源码为ServiceManager.java的文件实例化一个Daemon Process,用于在后台维护系统的运行;

2. 启动/system/bin下的zygote的时候实际上启动了app_main.cpp,该系统文件CPP位于frameworks\base\cmds\app_process\app_mian.cpp文件中;

3. app_main.cpp调用了AndroidRuntime.cpp,然后AndroidRuntime.cpp通过JNI调用了ZygoteInit.java, ZygoteInit.java又调用了SystemServer.java;

4. SystemServer.java通过JNI调用了com_android_server_systemService.cpp,然后通过运行system_init.cpp反过来调用SystemServer.java中的init2()这个方法,此时在init2()这个方法中调用了runtime->callStatic(“com/android/server/SystemServer”,”init2”)启动ServerThread线程

5. 服务线程ServerThread包含下面的功能:

  •   PowerManagerService:电源管理;
  •   ActivityManagerService:组件管理;
  •   WindowManagerService:窗口管理;
  •   PackageManagerService:应用程序是通过该Service启动的
  •   ......

更多相关文章

  1. 调用C++底层 Thread & Mutex 的注意事项
  2. Android中onInterceptTouchEvent与onTouchEvent
  3. Android调用测试
  4. Android(安卓)GraphicBuffer
  5. Android(安卓)电话的反射调用机制实现静默接听电话
  6. Android(安卓)增量更新实例(Smart App Updates)
  7. android中开机自动运行程序
  8. Android获取前台进程包名
  9. Android面经总结

随机推荐

  1. Android webview设置背景透明,去掉白色
  2. Android音频系统之AudioPolicyService的
  3. Android中桌面图标显示通知消息的数量
  4. android 网络交互
  5. Android Adapter使用总结
  6. Android(安卓)Intent的用法总结
  7. [Android]关于android sqlite database存
  8. Android项目结构 以及体系结构
  9. Linux 下编译Android
  10. Android中的IPC方式