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. 纯JS实现可拖拽表单

    转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要用到可拖拽表单,个人要比较喜欢自己动手,不怎么喜欢在不懂实现或者原理的情况下用插件,所以查找资料实现了一个. 思路:放入:用mouse ...

  2. Cannot override the final method from SherlockFragmentActivity

    调用ActionBarSherlock后页面找不到onCreateOptionsMenu报错 com.actionbarsherlock.app.SherlockFragmentActivity.on ...

  3. 实例演示Android异步加载图片(转)

    本文给大家演示异步加载图片的分析过程.让大家了解异步加载图片的好处,以及如何更新UI.首先给出main.xml布局文件:简单来说就是 LinearLayout 布局,其下放了2个TextView和5个 ...

  4. Elasticsearch入门必备——ES中的字段类型以及常用属性

    使用Elasticsearch时,了解字段的概念,是必不可少的.毕竟无论是es还是传统的数据库,都无法弱化字段的类型. 背景知识 在Es中,字段的类型很关键: 在索引的时候,如果字段第一次出现,会自动 ...

  5. 基于HT for Web 3D技术快速搭建设备面板

    以真实设备为模型,搭建出设备面板,并实时获取设备运行参数,显示在设备面板上,这相比于纯数值的设备监控系统显得更加生动直观.今天我们就在HT for Web的3D技术上完成设备面板的搭建. 我们今天模拟 ...

  6. CSS3魔法堂:认识@font-face和Font Icon

    一.前言 过去我们总通过图片来美化站点的LOGO.标题.图标等,而现在我们可以通过@font-face获取另一种更灵活的美化方式. 二.看看例子 /* 定义 */ @font-face { font- ...

  7. win10系统下点击关机却自动重启的问题解决思路

    第一步.进入win10系统后,我们点击开始菜单上鼠标右键,选择控制面板   第二步.找到电源选项,点击进去(如何没发现,点击右上角查看方式,更换为小图标)   第三步.点击选择关闭盖子的功能   第四 ...

  8. LeetCode - Pascal's Triangle II

    题目: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return ...

  9. SignalR入门之持久性连接

    为了保持客户端和服务端之间的持久性连接的开发性,并且使用传输在这这样的连接上发送数据,这个用来访问SignalR持久性连接的底层API提供了一个隐藏底层固有复杂性的抽象层. 事实上,通过该API访问通 ...

  10. javascript--Object

    概述 (1)定义 对象(object)是JavaScript的核心概念,也是最重要的数据类型.JavaScript的所有数据都可以被视为对象. 简单说,所谓对象,就是一种无序的数据集合,由若干个&qu ...