Android Fk: Activty管理之token总结
本文的plantuml 源码及draw.io原图提供至百度云链接中,可自行下载修改
链接: https://pan.baidu.com/s/1XdpTxN-rOP4JNht_BzPSRQ 提取码: fsur
高效学习的博客:
Android Fk: Activity的管理AMS中的结构总结 基于Android 9.0: https://blog.csdn.net/TaylorPotter/article/details/88429261
深入理解WindowManagerService:https://blog.csdn.net/wf_fln/article/details/78593080
WindowManagerService的理解:https://blog.csdn.net/ztliduo/article/details/54425089
深入理解Activity——Token之旅:https://blog.csdn.net/guoqifa29/article/details/46819377
Android AMS(六) Activity与WMS的连接过程之AppWindowToken:https://blog.csdn.net/liu362732346/article/details/85336050
一.Token概述

- Token创建:第一次启动指定Activity时,AMS会去创建ActivityRecord记录该Activity信息,ActivityRecord构造函数里创建一个Token类型对象保存在ActivityRecord.appToken中;
- 传递至WMS:AMS在为启动Activity创建AppWindowContainerController的时候将ActivityRecord中的Token对象加入到WMS中的mTokenMap中
- 传递至ActivityThread:AMS binder调用到LaucherActivity的时将token 传到应用进程并封装成ActivityClientRecord保存在ActivityThread的mActivitys这个Arraymap中
- 添加窗口:应用进程在向WMS 添加窗口的时候会将windowtoken及token传入到WMS中,WMS根据token创建Windowstate对象用于管理窗口
总之windowtoken及appwindowtoken中的token成员变量及是AMS为activity创建的ActivityRecord中的Token对象,该Token对象在应用进程以ActivityClientRecord的形式保存代理,这样,就app,ams,wms就关联起来了指定的Activity,大家就都可以确定当前需要处理,显示等操作的Activity是哪一个。
二.详细过程
2.1 AMS创建Token并传递至WMS中:

2.2 AMS传递Token至ActivityThread中:

2.3 App addWindow将token传递至WMS关联起Activty和Window:

本文围绕Android中Token展开,介绍其创建与传递过程。首次启动Activity时,AMS创建Token并记录Activity信息,随后将Token传递至WMS和ActivityThread。应用进程添加窗口时,把token传入WMS,借此关联起App、AMS和WMS,明确需处理的Activity。

2万+

被折叠的 条评论
为什么被折叠?



