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



  • 相关阅读:
    SNOI 2019 字符串
    1068: [SCOI2007]压缩
    POJ 1848 Tree 树形DP
    BZOJ bzoj1396 识别子串
    BZOJ 4503: 两个串
    BZOJ 2302: [HAOI2011]Problem c(数学+DP)
    BZOJ 3157: 国王奇遇记 (数学)
    CF_528D
    BZOJ 3000: Big Number (数学)
    新の开始
  • 原文地址:https://www.cnblogs.com/lipeil/p/5996405.html
Copyright © 2011-2022 走看看