zoukankan      html  css  js  c++  java
  • Activity启动流程(三)

    这里对启动Activity过程中涉及到的ActivityStackTaskRecordActivityRecordActivityStackSupervisor进行简单的分析,实际上一张时序图就可以看明白了。相关的代码都在上面了:代码分析

    sequenceDiagram
    participant ActivityStarter
    participant ActivityStack
    participant TaskRecord
    note over ActivityStarter:startActivity()
    ActivityStarter–>>ActivityStarter:new ActivityRecord()
    note over ActivityStarter:setTaskFromReuseOrCreateNewTask()
    ActivityStarter->>ActivityStack:createTaskRecord
    note over ActivityStack:createTaskRecord()
    ActivityStack->>TaskRecord:new TaskRecord()
    note over TaskRecord:TaskRecord()
    TaskRecord–>>ActivityStack:TaskRecord
    ActivityStack–>>ActivityStack:addTask //存入mTaskHistory
    ActivityStack–>>ActivityStarter:TaskRecordk
    note over ActivityStarter:addOrReparentStartingActivity()
    ActivityStarter->>TaskRecord:addActivityToTop //添加Activity到mActivities栈顶
    note over TaskRecord:addActivityToTop()
    TaskRecord–>>TaskRecord:addActivityAtIndex()
    TaskRecord–>>ActivityStarter:返回

    简单总结:
    1.startActivity时首先会创建一个ActivityRecord。
    2.如果有需要,会创建一个TaskRecord,并把这个TaskRecord加入到ActivityStack中。
    3.将ActivityRecord添加到TaskRecord的栈顶。

     
  • 相关阅读:
    二维数组的使用及其内存结构
    一维数组的练习
    数组的默认初始化
    数组
    完数
    break与continue
    乘法表及质数的输出法
    嵌套循环的使用
    Elasticsearch索引和查询性能调优
    elasticsearch数据冷热分离、数据冷备
  • 原文地址:https://www.cnblogs.com/mingfeng002/p/11754088.html
Copyright © 2011-2022 走看看