adb shell dumpsys 系列(二)activity activities命令与taskRecord

本文深入探讨了Android系统中TaskRecord类的作用及其与Activity栈的关系。通过具体实验,展示了不同Activity启动模式如何影响栈中Activity的排列顺序,揭示了TaskRecord在管理Activity生命周期中的关键角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 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中的信息一直

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值