appToken 来源
、appToken的来源
ActivityRecord, 用于在ActivityManagerService中记录Activity相关的信息(ActivityThread端 用的是ActivityClientRecord),它有个内部静态内Token, 继承IApplicationToken.stub, 看名称可以知道它是一个Binder服务的实现类,而且是用AIDL架构实现的,具体可见frameworks\base\core\java\android\view\IApplicationToken.aidl文件 2、appToken的创建
我们在创建ActivityRecord的时候,会创建它,如下:
appToken = new Token(this), 它持有了ActivityRecord的弱引用。 通常我们在AMS收到启动新的Activity命令的时候,会在ActivityStackSupervisor->startActivityLocked 中初始化一个 ActivityRecord
AMS->startActivity()
AMS->startActivityAsUser()
ActivityStackSupervisor->startActivityMaywait()
ActivityStackSupervisor->startActivityLocked(), 这里创建新的ActivityRecord
ActivityStackSupervisor->startActivityUncheckedLocked
ActivityStack->resumeTopActivityLocked()
ActivityStack->resumeTopActivityInnerLocked()
ActivityStackSupervisor->startSpecificActivityLocked()
ActivityStackSupervisor->realStartActivityLocked()
IApplicationThread->scheduleLaunchActivity 通知ActivityThread启动新的Activity。
3、AppToken的去处
上述 scheduleLaunchActivity 的时候 会将appToke 传递到ActivityThread中。
ApplicationThread->scheduleLaunchActivity 这里会将传递过来的appToken 赋值给新创建的 ActivityClientRecord 的token变量。
ActivityThread->performLaunchActivity() 这里会new 新的Activity;
Activity->attach(); 这里会new PhoneWindow; 将token赋值给Activity的mToken变量; 创建PhoneWindow对应的WindowManagerImpl;并且将token赋值给Window的变量mAppToken
Activity->makeVisiable
WindowManagerImpl->addView()
WindowManagerGlobal->addView()
PhoneWindow->adjustLayoutParamsForSubWindow 这个地方会将mAppToken赋值给WindowManager.LayoutParams 变量中
ViewRootImpl->setView
IWindowSession->addToDisplay()将token 传入到Session 、WindowManagerService中
这篇文章分析的更加具体:
http://blog.csdn.net/ritterliu/article/details/39318859
appToken 来源的更多相关文章
- Atitit 知识管理的重要方法 数据来源,聚合,分类,备份,发布 搜索
Atitit 知识管理的重要方法 数据来源,聚合,分类,备份,发布 搜索 1.1. Rss 简易信息聚合(也叫聚合内容 Really Simple Syndication1 1.1. Rss 简易信息 ...
- spider RPC框架的需求来源与特性介绍(一)
spider RPC 特性介绍 spider RPC 性能测试 spider RPC 入门指南 spider RPC 配置文件参考 spider RPC 开发指南 spider RPC 安全性 spi ...
- 捕获起英文名Edda的灵感来源,我的心愿是程序员这个行业能够男女人数平衡
在腾讯的暑期训练营结识过不少鹅厂的前辈,他们对我的成长提供了很大的帮助,可以说有着知遇之恩,大部分现在还保持着联系,请教问题时会不吝赐教,以至于就在前两天11号企鹅18岁的成年礼,朋友圈刷满了领腾讯总 ...
- 12月6日PHPCMS取内容发布管理中的来源
调取内容发布管理中的来源,如果直接写{$val['copyfrom']}调取出来的内容为 内容|0 ,要先根据"|"进行拆分,然后再写. 示例: <!--新闻开始--& ...
- mac显示任何来源
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Microsoft YaHei"; color: #333333; ba ...
- ASP.NET Core的配置(4):多样性的配置来源[下篇]
我们在上篇和中篇对配置模型中默认提供的各种ConfigurationProvider进行了深入详尽的介绍,如果它们依然不能满足项目中的配置需求,我们可以还可以通过自定义ConfigurationPro ...
- ASP.NET Core的配置(4):多样性的配置来源[中篇]
我们在本篇文章中会介绍三种针对物理文件的ConfiguationProvider,它们分别是针对JSON文件的JsonConfiguationProvider,针对XML文件的XmlConfiguat ...
- ASP.NET Core的配置(4):多样性的配置来源[上篇]
较之传统通过App.config和Web.config这两个XML文件承载的配置系统,ASP.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命 ...
- cms真实问题的来源以及模拟解决方案
先来描述一下cms问题的来源: 初始需求: 在开发的过程中有这样的一个处理时间显示的需求: 如果时间小于1分钟显示秒, 如果时间小于1小时显示分钟, 如果时间小于1天显示小时, 如果大于1天显示日期. ...
随机推荐
- 【原创】-- nfs安装配置及使用,挂载根文件系统
环境:ubuntu14.04(非虚拟机),OK6410 环境搭建: (1) #sudo apt-get install nfs-kernel-server 如果已经是最新版本了,无需安装 (2) 建立 ...
- javascript改变样式(cssFloat,styleFloat)
昨天遇到一用js改变元素浮动的,当时直接写了 obj.style.float="left";结果没起作用:查了资料后才发现不能这样写,现在整理下几种样式写法 1,直接写css属性的 ...
- .NET 实现自定义ContextUser的Identity和Principal实现自定义用户信息,权限验证。
备用收藏,http://blog.csdn.net/msdnxgh/article/details/6894885 .NET 实现自定义ContextUser的Identity和Principal 在 ...
- SymmetricDS 3.5.0 发布,数据同步和复制
SymmetricDS 3.5.0 关闭 53 个问题,新增对 SQLite on Android.Sybase ASE 和 Sybase ASA 的支持:增加了文件同步功能,可同步目录.文件过滤和脚 ...
- 大熊君说说JS与设计模式之------状态模式State
一,总体概要 1,笔者浅谈 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式. 状态模式主要解决的是当控制一个对象状态的条件表达式过于 ...
- Server Develop (五) Linux并发模型
Linux并发模型 目前可以实现并发程序的方法有Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及select模 ...
- [外挂1] MFC 鼠标位置设置
a.取得窗口相对坐标 b.读出游戏窗口信息GetWindowRect c.移动鼠标指针SetCursorPos HWND gameh;//游戏窗口句柄 RECT r1;//RECT结构表示一个矩 ...
- [C++] socket - 5 [API事件对象实现线程同步]
/*API事件对象实现线程同步*/ #include<windows.h> #include<stdio.h> DWORD WINAPI myfun1(LPVOID lpPar ...
- baguetteBox.js响应式画廊插件(纯JS)
baguetteBox.js baguetteBox.js 是一个简单和易于使用lightbox纯JavaScript脚本,拥有图像放大缩小并带有相应的CSS3过度,并能在触摸屏等设备上完美展示. D ...
- SQL行转列和列转行
行列互转,是一个经常遇到的需求.实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现. 在读了技术内幕那一节后,虽说这些解决方案早就用过了,却没有系统性的认识和 ...