、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. PHP生成迅雷、快车、旋风等软件的下载链接代码实例

    PHP生成迅雷.快车.旋风等软件的下载链接代码实例 <?php function Download() { $urlodd=explode('//',$_POST["url" ...

  2. Google Chrome: Make the Bookmarks Bar Display as Icons Only

    By reducing your bookmarks to show only the icons, you can access more of them from the Bookmarks ba ...

  3. 部分具有统计功能的TSQL语句(例如DBCC语句,全局函数,系统存储过程)

    部分具有统计功能的TSQL语句(例如DBCC语句,全局函数,系统存储过程) 这些功能也能帮助用户了解和监控SQLSERVER的运行情况 DBCC语句,DBCC语句是SQL2005的数据库控制台命令 D ...

  4. 学一点Git--20分钟git快速上手

    (图片已修复)在Git如日中天的今天,不懂git都不好意思跟人说自己是程序猿.你是不是早就跃跃欲试了,只是苦于没有借口(契机). 好吧,机会就在今天. 给我20分钟,是的,只要20分钟, 让你快速用上 ...

  5. Queue插入的时候报错:源数组长度不足。请检查 srcIndex 和长度以及数组的下限。

    异常问题记录: 本想自己手动实现一个日志记录功能.使用Queue队列集合来实现多线程的日志记录. 测试 一个线程写入数据Enqueue和一个线程读取数据Dequeue ,直接用的无休眠死循环. 终于抛 ...

  6. [ACM_搜索] Triangles(POJ1471,简单搜索,注意细节)

    Description It is always very nice to have little brothers or sisters. You can tease them, lock them ...

  7. [OpenGL] 1、环境搭建及最小系统

    >_<: 首先推荐一个企业版的VC6.0自带OpenGL和DirectX,非常方便:http://pan.baidu.com/s/1mgIAGi8 PS: 要注意这里的OpenGL建立的工 ...

  8. 【Java】Lucene检索引擎详解

    基于Java的全文索引/检索引擎——Lucene Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能. L ...

  9. crossplatform---electron Quick Start

    Electron enables you to create desktop applications with pure JavaScript by providing a runtime with ...

  10. Leetcode 200 Number of Islands DFS

    统计联通区域块的个数,简单dfs,请可以参考DFS框架:Leetcode 130 Surrounded Regions DFS class Solution { public: int m, n; b ...