、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 来源的更多相关文章

  1. Atitit 知识管理的重要方法 数据来源,聚合,分类,备份,发布 搜索

    Atitit 知识管理的重要方法 数据来源,聚合,分类,备份,发布 搜索 1.1. Rss 简易信息聚合(也叫聚合内容 Really Simple Syndication1 1.1. Rss 简易信息 ...

  2. spider RPC框架的需求来源与特性介绍(一)

    spider RPC 特性介绍 spider RPC 性能测试 spider RPC 入门指南 spider RPC 配置文件参考 spider RPC 开发指南 spider RPC 安全性 spi ...

  3. 捕获起英文名Edda的灵感来源,我的心愿是程序员这个行业能够男女人数平衡

    在腾讯的暑期训练营结识过不少鹅厂的前辈,他们对我的成长提供了很大的帮助,可以说有着知遇之恩,大部分现在还保持着联系,请教问题时会不吝赐教,以至于就在前两天11号企鹅18岁的成年礼,朋友圈刷满了领腾讯总 ...

  4. 12月6日PHPCMS取内容发布管理中的来源

    调取内容发布管理中的来源,如果直接写{$val['copyfrom']}调取出来的内容为   内容|0  ,要先根据"|"进行拆分,然后再写. 示例: <!--新闻开始--& ...

  5. mac显示任何来源

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Microsoft YaHei"; color: #333333; ba ...

  6. ASP.NET Core的配置(4):多样性的配置来源[下篇]

    我们在上篇和中篇对配置模型中默认提供的各种ConfigurationProvider进行了深入详尽的介绍,如果它们依然不能满足项目中的配置需求,我们可以还可以通过自定义ConfigurationPro ...

  7. ASP.NET Core的配置(4):多样性的配置来源[中篇]

    我们在本篇文章中会介绍三种针对物理文件的ConfiguationProvider,它们分别是针对JSON文件的JsonConfiguationProvider,针对XML文件的XmlConfiguat ...

  8. ASP.NET Core的配置(4):多样性的配置来源[上篇]

    较之传统通过App.config和Web.config这两个XML文件承载的配置系统,ASP.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命 ...

  9. cms真实问题的来源以及模拟解决方案

    先来描述一下cms问题的来源: 初始需求: 在开发的过程中有这样的一个处理时间显示的需求: 如果时间小于1分钟显示秒, 如果时间小于1小时显示分钟, 如果时间小于1天显示小时, 如果大于1天显示日期. ...

随机推荐

  1. centos使用jexus支持php小记录

    安装php(文章参考http://linuxdot.net/bbsfile-3132) yum install php 1)修改“/etc/php.ini”文件(有的位置在/etc/php5/cgi/ ...

  2. 命令行查看linux发行版版本信息

    有时候安装完自己的linux发行版系统(如ubuntu.centos.redhat.opensuse.--)时,把版本信息忽略了,又不想重启电脑,此时我们可以通过命令行方式来查看: 1.cat /et ...

  3. 委托、匿名委托、Lambda 表达式、Expression表达式树之刨根问底

    本篇不是对标题所述之概念的入门文章,重点在阐述它们的异同点和应用场景.各位看官,这里就不啰嗦了,直接上代码. 首先定义一个泛型委托类型,如下: public delegate T Function&l ...

  4. 跟我一起学WCF(13)——WCF系列总结

    引言 WCF是微软为了实现SOA的框架,它是对微乳之前多种分布式技术的继承和扩展,这些技术包括Enterprise Service..NET Remoting.XML Web Service.MSMQ ...

  5. Url转Link的C#正则表达式

    网上关于Url转链接(href)的正则表达式一搜一大堆,但真正好用的没几个. 后来在Matthew O'Riordan的Blog上发现一个很好用的正则表达式,是用Javascript写的,代码如下: ...

  6. Kali Linux系列教程之OpenVas安装

    Kali Linux系列教程之OpenVas安装 文 /玄魂 目录 Kali Linux系列教程之OpenVas安装 前言 1.  服务器层组件 2.客户层组件 安装过程 Initial setup ...

  7. 一页纸商业计划书 (Business Plan) 模板(转载)

    本文转载自:https://blog.eood.cn/business-plan 假如你也有一个 idea ,但是还处于想法阶段,这个商业计划书模板能够帮你理清思路. 这个一页 BP 模板简单实用,分 ...

  8. [读书笔记]C#学习笔记二: 委托和事件的用法及不同.

    前言:  C#委托是什么 c#中的委托可以理解为函数的一个包装, 它使得C#中的函数可以作为参数来被传递, 这在作用上相当于C++中的函数指针. C++用函数指针获取函数的入口地址, 然后通过这个指针 ...

  9. paip.java win程序迁移linux的最佳实践

    paip.java win程序迁移linux的最佳实践 1.class load路径的问题... windows哈第一的从calsses目录加载,,而linux优先从jar加载.. 特别的是修理了ja ...

  10. css3多列显示

    columen-width:定义单列显示的宽度.初始值是auto,适用于不可替代的块级元素,行内块元素和单元格,表格元素除外. 目前Webkit引擎支持-webkit-column-width,Moz ...