我们使用的接口是 com.android.server.am.ProcessList 的 mLruProcesses 。
将以下代码加入ActivityManagerService 的 dump 方法里面
if(args.length>=1 && args[0].equals("a1")){
ProcessRecord proc =null ;
for (int i=0; i<mProcessList.mLruProcesses.size(); i++) {
proc = mProcessList.mLruProcesses.get(i);
if(proc.processName.equals("com.example.test2"))
{
break;
}
}
if(proc != null){
ArraySet<BroadcastRecord> curReceivers = proc.curReceivers;
for(BroadcastRecord b : curReceivers){
pw.println("targetComp: "+b.targetComp);
pw.println("intent: "+b.intent);
pw.println("state: "+b.state);
pw.println();
}
}
return ;
}
然后就可以使用:
adb shell dumpsys activity a1 com.examploe.test2
com.examploe.test2 为进程名.
如果有正在运行的广播接收器,则有如下打印:
targetComp: ComponentInfo{com.example.test2/com.example.test2.R2}
intent: Intent { act=com.123.abc flg=0x10 cmp=com.example.test2/.R2 }
state: 1