一 TaskRecord简介
先看下TaskRecord类
这个类位于com.android.server.am包下面
class TaskRecord extends ConfigurationContainer implements TaskWindowContainerListener {
.....
/** List of all activities in the task arranged in history order */
final ArrayList<ActivityRecord> mActivities;
这个类中有一个很重要的成员变量 mActivities
这个成员变量记录了这个栈中国的activity
List of all activities in the task arranged in history order
翻译:task中的activity(以历史order来arranged)
----------------------------------------------------------------------------------------------------------------------------------------------------
二 TaskRecord 与 sysdump实验
这个类其实就代表了我们平时所说的activity 进栈,出栈中的栈
我们来做个小实验,从MainActivity一直跳到Test11,然后用adb shell dumpsys activity activities命令查看栈的情况
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Test1" />
<activity android:name=".Test2" />
<activity android:name=".Test3" />
<activity
android:name=".Test4"
android:launchMode="singleTask"
android:taskAffinity=".t11" />
<activity android:name=".Test5" />
<activity android:name=".Test6" />
<activity android:name=".Test7" />
<activity android:name=".Test8" />
<activity
android:name=".Test9"
android:launchMode="singleTask"
android:taskAffinity=".t22" />
<activity android:name=".Test10" />
<activity android:name=".Test11" />
cmd 中展示的信息如下
Running activities (most recent first):
TaskRecord{513d712 #10998 A=.t22 U=0 StackId=1 sz=3}
Run #11: ActivityRecord{ba35bf0 u0 calc.superdy.ttest/.Test11 t10998}
Run #10: ActivityRecord{4ec9460 u0 calc.superdy.ttest/.Test10 t10998}
Run #9: ActivityRecord{c4f1c7e u0 calc.superdy.ttest/.Test9 t10998}
TaskRecord{ee63ee3 #10997 A=.t11 U=0 StackId=1 sz=5}
Run #8: ActivityRecord{6fbbbf7 u0 calc.superdy.ttest/.Test8 t10997}
Run #7: ActivityRecord{dd5dd28 u0 calc.superdy.ttest/.Test7 t10997}
Run #6: ActivityRecord{45d7c5e u0 calc.superdy.ttest/.Test6 t10997}
Run #5: ActivityRecord{a224cdc u0 calc.superdy.ttest/.Test5 t10997}
Run #4: ActivityRecord{d853d9 u0 calc.superdy.ttest/.Test4 t10997}
TaskRecord{5c420e0 #10996 A=calc.superdy.ttest U=0 StackId=1 sz=4}
Run #3: ActivityRecord{5f26290 u0 calc.superdy.ttest/.Test3 t10996}
Run #2: ActivityRecord{83aa6df u0 calc.superdy.ttest/.Test2 t10996}
Run #1: ActivityRecord{dc894a0 u0 calc.superdy.ttest/.Test1 t10996}
Run #0: ActivityRecord{84a89d3 u0 calc.superdy.ttest/.MainActivity t10996}
很明显,TaskRecord和dumpsys中的信息一直