ActivityRecord部存储了activity所有信息,包括AMS的引用、AndroidManifes节点信息、activity状态、activity资源信息和activity进程相关信息,其中含有该AcitivityRecord所在的TaskRecord,这就将ActivityRecordTaskRecord关联在一起了

名称

类型

说明

service

ActivityManagerService

AMS引用

info

ActivityInfo

Activity中代码和AndroidManifes设置的节点,比如launchMode

launchedFromPackage

String

启动activity的包名

taskAffinity

String

Activity希望归属的栈

task

TaskRecord

ActivityRecord所在的TaskRecord

app

ProcessRecord

ActivityRecord所在的应用程序进程

state

ActivityState

当前activity的状态

icon

int

Activity的图标资源标识符

theme

int

Activity的主题资源标识符

 
 
TaskRecord
TaskRecord用来描述一个activity任务栈,其内部存储了任务栈的所有信息,包括任务栈的唯一标识符、任务栈的倾向性、任务栈的activity记录和AMS引用等,其中含有ActivityStack,也就是当前activity任务栈所归属的ActivityStack
其重要成员变量如下:

名称

类型

说明

taskId

int

任务栈的唯一标识符

affinity

String

任务栈的倾向性

intent

Intent

启动这个任务栈的Intent

mActivities

ArrayList<ActivtyRecord>

按照历史顺序排列的activity记录

mStack

ActivityStack

当前归属的ActivityStack

mService

ActivityManagerService

AMS的引用

 

ActivityStack
是一个管理类,用来管理系统所有activity,其内部维护了activity的所有状态、特殊状态的activity以及和activity关的列表等数据, ActivityStack是由ActivityStackSupervisor来进行管理的
1 ActivityStack的实例类型: ActivityStackSupervisor中有多种ActivityStack实例
2 ActivityState
ActivityStack中通过枚举存储了Activity的所有状态
ActivityStack.java  services\core\java\com\android\server\wm\ActivityStack.java
enum ActivityState {
        INITIALIZING,
        RESUMED,
        PAUSING,
        PAUSED,
        STOPPING,
        STOPPED,
        FINISHING,
        DESTROYING,
        DESTROYED,
        RESTARTING_PROCESS
    }

 

 

特殊状态的Activity: 

这些特殊的状态都是ActivityRecord类型,ActivityRecord用来记录一个activity的所有信息

AMS重要的数据结构

 

ActivityStack中维护的ArrayList
ActivityStack维护了元素类型为TaskRecord的列表,这样ActivityStackTaskRecord关联了,activity任务栈存储在ActivityStack中。

ArrayList

元素类型

说明

mTaskHistory

TaskRecord

所有没有被销毁的activity任务栈

mLRUActivities

ActivityRecord

正在运行的activity,列表的第一个条目是最近最少使用的activity

mNoAnimActivities

ActivityRecord

 

不考虑转换动画的activity

mValidateAppTokens

TaskGroup

用于与窗口管理器验证应用令牌

 

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-26
  • 2021-07-30
  • 2021-08-03
  • 2021-10-15
  • 2021-08-20
猜你喜欢
  • 2021-11-01
  • 2021-11-21
  • 2021-11-18
  • 2022-12-23
  • 2021-05-14
  • 2022-12-23
相关资源
相似解决方案