如何查看一个进程启动了哪些Activity?

思路如下:
第一步拿到这个进程的 ProcessRecord ,
然后通过 ProcessRecord 的 WindowProcessController 的 mActivities 变量就可以知道Activity 的具体信息 。

com.android.server.wm.WindowProcessController#dumpActivities

    public void dumpActivities(PrintWriter pw, String prefix) {
        if (mActivities.size() > 0) {
            pw.print(prefix);
            pw.println("Activities:");
            for (int i = 0; i < mActivities.size(); i++) {
                pw.print(prefix);
                pw.print("  - ");
                pw.println(mActivities.get(i));
            }
        }
    }

然后在 com.android.server.utils.PriorityDump.PriorityDumper#dump 调用:

 if(args.length>=1 &&  args[0].equals("w0")){
                ProcessRecord proc = null  ;
                for (int i = 0; i<mProcessList.mLruProcesses.size(); i++) {
                    if(mProcessList.mLruProcesses.get(i).processName.equals("com.example.test2"))
                    {
                        proc = mProcessList.mLruProcesses.get(i);
                        break;
                    }
                }

                if(proc != null){
                    pw.println(" hasForegroundActivities: "+  proc.getWindowProcessController().hasForegroundActivities());
                    proc.getWindowProcessController().dumpActivities(pw," ");
                } else{
                    pw.println(" not found");
                }
                return ;
            }

注意: 我这里指定了包名:com.example.test2

adb 命令如下:

adb  shell dumpsys activity w0

输出:

hasForegroundActivities: true
 Activities:
   - ActivityRecord{dccc809 u0 com.example.test2/.SecondActivity t72}
   - ActivityRecord{9cd80d2 u0 com.example.test2/.Alert t72}
   - ActivityRecord{1131fda u0 com.example.test2/.Activity3 t72}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值