本文介绍: (2)system_server进程收到请求后,会检查启动的Activity所在的进程是否已经启动了,如果已经启动了就打开,如果未启动采用Socket IPC向Zygote进程发出创建APP进程的请求;(1)点击桌面APP图标,Launcher进程采用Binder IPC的方式system_server进程的AMS(ActivityManagerService)发起startActivity的请求。APP进程在接收到请求后,创建目标Activity,进入Activity的生命周期

Android工程师进阶第八课 AMS、WMS和PMS

一、Binder通信

【Android Framework系列】第2章 Binder机制大全_android binder-CSDN博客 

Android Binder机制浅谈以及使用Binder进行跨进程通信的俩种方式(AIDL以及直接利用Binder的transact方法实现)_binder通信_低调网友的博客-CSDN博客 Android Binder通信原理–02:Binder入门篇 – 简书

androidbinder面试详解简书 androidbinder机制原理_flyingsmiling的技术博客_51CTO博客

百度安全验证 

Android 面试必备:高工必问Binder机制~ – 知乎

二、AMS启动流程

【Android Framework系列】第5章 AMS启动流程-CSDN博客

android 的AMS是什么 android ams原理_mob6454cc745a10的技术博客_51CTO博客 

Android系统组件——AMS,App启动中的AMS流程 – 知乎 

透视Android系统AMS、PMS和WMS,了解开发中的重要角色 – 知乎 

Android系统重要组件AMS_android ams_Just_Paranoid的博客-CSDN博客

AMS android ams android 介绍_mob64ca1417b0c6的技术博客_51CTO博客 

Android之AMS原理分析 – 简书 

深入分析AMS启动流程-ams启动流程

面试官: AMS在Android起到什么作用,简单的分析下Android的源码

三、Android应用启动流程分析

android 应用进程 android 进程启动流程_mob6454cc6acccd的技术博客_51CTO博客

三分钟带你了解Android 系统启动流程详解

Android应用启动流程分析 – 知乎

Android开发Launcher进程启动流程_Android_脚本之家

四、Activity创建/启动流程

Activity 启动主要涉及到3个进程。

1、根Activity的启动流程

(1)点击桌面APP图标,Launcher进程采用Binder IPC的方式system_server进程的AMS(ActivityManagerService)发起startActivity的请求。
(2)system_server进程接收到请求后,会检查要启动的Activity所在的进程是否已经启动了,如果已经启动了就打开,如果未启动则采用Socket IPC向Zygote进程发出创建APP进程的请求;
Zygote进程fork出新的进程,即APP进程;
(3)APP进程通过Binder IPC向system_server进程发起attachApplication请求;
system_server进程在接收到请求后,进行一系列准备工作后,再通过Binder IPC向APP进程发送scheduleLaunchActivity的请求:

(进程创建好以后,会调用ActivityThread.main(),初始化MainLooper,并创建Application对象然后Instrumentation.newApplication()反射创建Application,创建ContextImpl通过Applicationattach方法与Application进行绑定,最终会调用Instrumentation.callApplicationOnCreate执行Application的onCreate函数进行一些初始化工作完成后会通知AMS进程已经启动好了。)

(4)APP进程接收到请求后,通过Handler向主线发送LAUNCH_ACTIVITY消息,创建目标Activity,进入Activity的生命周期
ActivityManagerProxy是AMS的远程接口,ApplicationThreadProxy是ApplicationThread的远程接口

2、进程内启动Activity。

普通Activity启动过程涉及AMS所在进程(system_server)和APP进程

APP进程通过Binder IPC向system_server进程发起请求
system_server接收到请求后,进行一系列准备工作解析Activity,处理启动参数),再通过Binder IPC向APP进程发送消息
APP进程在接收到请求后,创建目标Activity,进入Activity的生命周期

3、源码分析链路

启动一个Activity一般通过startActivity()

startActivity(new Intent(OneActivity.this,TwoActivity.class));

Activity的启动流程_activity启动流程_ErwinNakajima的博客-CSDN博客

Activity的启动流程这一篇够了 – 简书

Activity启动流程-基于Android API31 – 简书

Android Activity的创建流程(Android-10)_mb648c1d58d9d6b的技术博客_51CTO博客

Android Activity学习笔记——Activity的启动和创建_wx63b644a53b596的技术博客_51CTO博客

Android Activity的创建流程(Android-10)_activity创建流程_Misdirection_XG的博客-CSDN博客

https://blog.51cto.com/u_16163480/6991935

Activity创建流程-CSDN博客

Activity 之 Window 创建过程_activity window-CSDN博客

五、Android WMS的解析 (UI渲染显示)

【Android Framework系列】第7章 WMS原理_android wms___Yvan的博客-CSDN博客

Android开发中的WMS详细解析

【Android】WMS(四)WMS职责_android wms-CSDN博客

Android—WMS核心分析_android wms-CSDN博客

Android—WMS核心分析_android wms-CSDN博客

Android WMS工作原理浅析(一)_惜许的博客-CSDN博客

Android WMS工作原理浅析(二)_惜许的博客-CSDN博客

WMS启动流程分析 | Skytoby

WMS—启动过程 – Gityuan博客 | 袁辉辉的技术博客

Android Framework底层原理之WMS的启动流程 – 知乎

【安卓12源码】WMS的作用及其启动流程_android wms_蜘蛛侠不会飞的博客-CSDN博客

关于一些Android WMS的解析 – 简书

【Android Framework系列】第7章 WMS原理_android wms___Yvan的博客-CSDN博客

原文地址:https://blog.csdn.net/lanxuan1993/article/details/134664918

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_43180.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注