Android系统启动加载流程:

参考图

  • Linux内核加载完毕
  • 启动init进程
  • init进程fork出zygote进程
  • zygote进程在ZygoteInit.main()中进行初始化的时候fork出SystemServer进程
  • SystemServer进程开启的时候初始化ActivityThreadActivityManagerService(其它还有PowerManagerServiceDisplayManagerServicePackageManagerService
  • 启动LauncherLauncher本质上也是一个App,继承自Activity

App与AMS通过Binder进行IPC通信

启动一个Activity

客户端:ActivityManagerProxy --> Binder驱动 --> ActivityManagerService:服务器

  • ActivityThread
    老板,虽然说家里的事自己说了算,但是需要听从AMS的指挥
  • Instrumentation
    老板娘,负责家里的大事小事,但是一般不抛头露面,听一家之主ActivityThread的安排,每个Activity都有一个Instrumentation引用,整个进程只有一个Instrumentation实例
  • ActivityManagerProxy
    ActivityManagerNative.getDefault().startActivity获取ActivityManagerProxy对象通过Binder IPC与AMS通信
  • AMS
    真正启动一个Ativity(ActivityStackSupervisor, ActivityStack

Resume一个Activity

客户端:ApplicationThread <-- Binder驱动 <-- ApplicationThreadProxy:服务器

  • AMS
  • ApplicationThreadProxy
    ApplicationThreadProxy对象通过Binder IPC与客户端通信。
  • ApplicationThread
  • Handler
  • ActivityThread
  • Activity
    调用onResume方法

AMS(SystemServer进程)与zygote通过Socket进行IPC通信

参考:http://blog.csdn.net/zhaokaiqiang1992/article/details/49428287

[Android]Activity启动过程的更多相关文章

  1. android Activity启动过程(一)从startActivty开始说起

    从启动startActivity开始说起 MainActivity.startActivity() Activity.startActivity() Activity.startActivityFor ...

  2. android Activity启动过程(四)startActivityUncheckedLocked

    final int startActivityUncheckedLocked(ActivityRecord r, ActivityRecord sourceRecord, IVoiceInteract ...

  3. android Activity启动过程(三)从栈顶Activity的onPause到启动activityon的Resume过程

    ActivityStack.startPausingLocked() IApplicationThread.schudulePauseActivity() ActivityThread.sendMes ...

  4. android Activity启动过程(二)从ActivityManagerService的startActivity到栈顶Activity的onPause过程

    ActivityManagerService.startActivity() ActvityiManagerService.startActivityAsUser() ActivityStackSup ...

  5. Android应用程序的Activity启动过程简要介绍和学习计划

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6685853 在Android系统中,Activ ...

  6. Android深入四大组件(五)Android8.0 根Activity启动过程(后篇)

    前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读An ...

  7. Android深入四大组件(四)Android8.0 根Activity启动过程(前篇)

    前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读An ...

  8. Android世界第一个activity启动过程

    Android世界第一个activity启动过程 第一次使用Markdown,感觉不错. Android系统从按下开机键一直到launcher的出现,是一个如何的过程,中间都做出了什么操作呢.带着这些 ...

  9. Android 面试必备 - 系统、App、Activity 启动过程“一锅端”

    Android 系统启动过程 从系统层看: linux 系统层 Android系统服务层 Zygote 从开机启动到Home Launcher: 启动bootloader (小程序:初始化硬件) 加载 ...

随机推荐

  1. redis学习之三配置文件redis.conf 的含义

    摘自http://www.runoob.com/redis/redis-conf.html 安装redis之后的第一件事,我就开始配置密码,结果总是不生效,而我居然还没想到原因.今天突然用命令行设置了 ...

  2. 【模式匹配】更快的Boyer-Moore算法

    1. 引言 前一篇中介绍了字符串KMP算法,其利用失配时已匹配的字符信息,以确定下一次匹配时模式串的起始位置.本文所要介绍的Boyer-Moore算法是一种比KMP更快的字符串匹配算法,它到底是怎么快 ...

  3. 探秘重编译(Recompilations)(2/2)

    在上一篇文章里,我讨论了使用临时表如何引起SQL Server里的重编译.在文章最后我提到,今天这篇文章我会聚焦表变量(Table Variables)的更多信息,它可以避免重编译的昂贵开销.我们来详 ...

  4. requests模块--python发送http请求

    requests模块 在Python内置模块(urllib.urllib2.httplib)的基础上进行了高度的封装,从而使得Pythoner更好的进行http请求,使用Requests可以轻而易举的 ...

  5. 基于HTML5 Canvas实现工控2D叶轮旋转

    之前在拓扑上的应用都是些静态的图元,今天我们将在拓扑上设计一个会动的图元——叶轮旋转. http://www.hightopo.com/guide/guide/core/serialization/e ...

  6. C#--常量

  7. STM32 DMA使用详解

    DMA部分我用到的相对简单,当然,可能这是新东西,我暂时还用不到它的复杂功能吧.下面用问答的形式表达我的思路. DMA有什么用? 直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数 ...

  8. Razor语法中链接的一些方法

    在Razor中,有HTML.ActionLink和 Url.Action来呈现链接.它们有什么区别呢.能分清了,就知道在什么情况之下使用它们了. 首先来看html.ActionLink,这个方法重载挺 ...

  9. kendo ui的treeView节点点击事件修改和grid的配置的一点总结

    kendo-ui的treeView节点(node)点击时  可以触发一个select的事件(event),并且连续点击多次相同节点,可以触发并且只能触发一次该事件. 可是需求上需要实现:每次点击相同的 ...

  10. ASPose导出excel简单操作

    string file = FileDialogHelper.SaveExcel(string.Format("{0}.xls", excelName)); if (!string ...