zoukankan      html  css  js  c++  java
  • appToken 来源

    1、appToken的来源
    ActivityRecord, 用于在ActivityManagerService中记录Activity相关的信息(ActivityThread端 用的是ActivityClientRecord),它有个内部静态内Token, 继承IApplicationToken.stub, 看名称可以知道它是一个Binder服务的实现类,而且是用AIDL架构实现的,具体可见frameworksasecorejavaandroidviewIApplicationToken.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



  • 相关阅读:
    VSTO开发指南(VB2013版) 第四章 Excel编程
    VSTO开发指南(VB2013版) 第三章 Excel编程
    VSTO开发指南(VB2013版) 第二章 Office解决方案介绍
    VSTO开发指南(VB2013版) 第一章 Office对象模型
    打印预览
    打印
    工具函数
    开始使用
    模版对应信息
    解决PLSQL或者sqlplus连接oracle慢的方法
  • 原文地址:https://www.cnblogs.com/lipeil/p/5996405.html
Copyright © 2011-2022 走看看