温江做网站,排名优化seo公司,北京教育网站建设,网站增加新闻功能Android工程师进阶第八课 AMS、WMS和PMS
一、Binder通信
【Android Framework系列】第2章 Binder机制大全_android binder-CSDN博客
Android Binder机制浅谈以及使用Binder进行跨进程通信的俩种方式#xff08;AIDL以及直接利用Binder的transact方法实现#xff09;_bind…Android工程师进阶第八课 AMS、WMS和PMS
一、Binder通信
【Android Framework系列】第2章 Binder机制大全_android binder-CSDN博客
Android Binder机制浅谈以及使用Binder进行跨进程通信的俩种方式AIDL以及直接利用Binder的transact方法实现_binder通信_低调网友的博客-CSDN博客 Android Binder通信原理--02Binder入门篇 - 简书
androidbinder面试详解简书 androidbinder机制原理_flyingsmiling的技术博客_51CTO博客
百度安全验证
Android 面试必备高工必问Binder机制~ - 知乎
二、AMS启动流程
【Android Framework系列】第5章 AMS启动流程-CSDN博客
android 的AMS是什么 android ams原理_mob6454cc745a10的技术博客_51CTO博客
Android系统组件——AMSApp启动中的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个进程。
系统进程 SystemServer 负责管理整个framework是Zygote孵化的第一个进程App进程App进程是用户点击桌面icon时通过Launcher进程请求SystemServer再调用Zygote孵化的Zygote进程所有进程孵化都由Zygote完成而Zygote是init进程的子进程也由init进程孵化如果点击桌面icon启动还会涉及到 Launcher进程Zygote孵化的第一个应用进程
1、根Activity的启动流程。
1点击桌面APP图标Launcher进程采用Binder IPC的方式向system_server进程的AMS(ActivityManagerService)发起startActivity的请求。 2system_server进程接收到请求后会检查要启动的Activity所在的进程是否已经启动了如果已经启动了就打开如果未启动则采用Socket IPC向Zygote进程发出创建APP进程的请求 Zygote进程fork出新的进程即APP进程 3APP进程通过Binder IPC向system_server进程发起attachApplication请求 system_server进程在接收到请求后进行一系列的准备工作后再通过Binder IPC向APP进程发送scheduleLaunchActivity的请求
(进程创建好以后会调用ActivityThread.main(),初始化MainLooper并创建Application对象。然后Instrumentation.newApplication()反射创建Application创建ContextImpl通过Application的attach方法与Application进行绑定最终会调用Instrumentation.callApplicationOnCreate执行Application的onCreate函数进行一些初始化的工作。完成后会通知AMS进程已经启动好了。)
4APP进程接收到请求后通过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 startActivity() startActivityForResult() Instrumentation 用于实现应用程序检测代码的基类。当在打开程序指令的时候运行这个类将在任何应用程- 序代码之前为您实例化可以监视系统与应用程序的所有交互。在AndroidManifest.xml文件的instrumentation标记。 execStartActivity() ActivityManagerService startActivity() startActivityAsUser() ActivityStarter 用于解释如何启动活动。此类记录所有逻辑用于确定如何将意图和标志转换为Activity以及关联的任务和堆栈。 execute() startActivity() startActivityUnchecked() ActivityStackSupervisor resumeFocusedStackTopActivityLocked() ActivityStack 单个Activity堆栈的状态和管理 resumeTopActivityUncheckedLocked() resumeTopActivityInnerLocked() ActivityStackSupervisor Activity堆栈管理 startSpecificActivityLocked() realStartActivityLocked() ClientTransaction 一种容器它保存一系列消息比如声明周期的状态这些消息可以发送给client。 ClientTransaction.obtain(app.thread, r.appToken)//初始化 addCallback((LaunchActivityItem.obtain(new Intent(r.intent),...) ClientLifecycleManager //该类能够组合多个client生命周期转换请求/回调并将它们作为单个事务执行 scheduleTransaction(clientTransaction) ClientTransaction schedule() ApplicationThread scheduleTransaction() ActivityThread 它管理应用程序进程中主线程中执行的调度和执行活动、广播以及活动管理器请求的其他操作。 scheduleTransaction() sendMessage(ActivityThread.H.EXECUTE_TRANSACTION, transaction); ClientTransactionHandler //ActivityThread 继承 ClientTransactionHandler所以调用了父类scheduleTransaction scheduleTransaction() TransactionExecutor 以正确的顺序管理事务执行 execute() executeCallbacks() transaction.getCallbacks().get(i).execute() LaunchActivityItem 请求启动Activity execute() ActivityThread handleLaunchActivity() performLaunchActivity() Instrumentation callActivityOnCreate() Activity onCreate()
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博客