[Android]Activity启动过程

简介: Android系统启动加载流程:参考图Linux内核加载完毕启动init进程init进程fork出zygote进程zygote进程在ZygoteInit.main()中进行初始化的时候fork出SystemServer进程SystemServer进程开启的时候初始化Activit...

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

相关文章
|
存储 SQL 人工智能
Android Activity启动流程一:从Intent到Activity创建
Android Activity启动流程一:从Intent到Activity创建
|
4月前
|
Android开发
Android面试题之activity启动流程
该文探讨了Android应用启动和Activity管理服务(AMS)的工作原理。从Launcher启动应用开始,涉及Binder机制、AMS回调、进程创建、Application和Activity的生命周期。文中详细阐述了AMS处理流程,包括创建ClassLoader、加载APK、启动Activity的步骤,以及权限校验和启动模式判断。此外,还补充了activity启动流程中AMS的部分细节。欲了解更多内容,可关注公众号“AntDream”。
47 1
|
4月前
|
Android开发 UED 开发者
Android Activity启动模式详解
Android Activity启动模式详解
178 0
|
缓存 Android开发 开发者
Android | Activity 启动流程分析(上)
Android | Activity 启动流程分析(上)
|
Android开发 容器
Android | Activity 启动流程分析(下)
Android | Activity 启动流程分析(下)
|
Android开发 传感器 数据库
|
Android开发
Android Activity的launchMode四种启动模式备忘
Android Activity的launchMode四种启动模式备忘 Android的Activity的启动模式有四种,在AndroidManifest.xml通过配置Activity的android: launchMode可以设置。
1231 0