美文网首页
Android Fk: Activty管理之token总结

Android Fk: Activty管理之token总结

作者: 马小藤 | 来源:发表于2019-03-20 10:38 被阅读0次

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

一.概述

在这里插入图片描述
  1. Token创建:第一次启动指定Activity时,AMS会去创建ActivityRecord记录该Activity信息,ActivityRecord构造函数里创建一个Token类型对象保存在ActivityRecord.appToken中;
  2. 传递至WMS:AMS在为启动Activity创建AppWindowContainerController的时候将ActivityRecord中的Token对象加入到WMS中的mTokenMap中
  3. 传递至ActivityThread:AMS binder调用到LaucherActivity的时将token 传到应用进程并封装成ActivityClientRecord保存在ActivityThread的mActivitys这个Arraymap中
  4. 添加窗口:应用进程在向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 Fk: Activty管理之token总结

      本文链接:https://www.haomeiwen.com/subject/ybzamqtx.html