[RK3288][Android6.0] 调试笔记 --- 查看broadcast对应发送者进程

来源:互联网 发布:tcp和udp端口号区别 编辑:程序博客网 时间:2024/05/16 07:11

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

发现开机的时候Muisc会收到broadcast被调用起来,
ActivityManager: Start proc 982:com.android.music/u0a29 for broadcast com.android.music/.MediaButtonIntentReceiver
那么如何确定是谁发的广播呢?

虽然Send Broadcast有很多方法,但是最终走的接口都一样,都是经过ActivityManagerService通过processNextBroadcast()接口来处理,在这里打印出对应的caller name就可以了。

kris@:~/rk3288/frameworks/base$ g df services/core/java/com/android/server/am/BroadcastQueue.javadiff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.javaindex 6de8579..4e8ea51 100644--- a/services/core/java/com/android/server/am/BroadcastQueue.java+++ b/services/core/java/com/android/server/am/BroadcastQueue.java@@ -1063,9 +1063,11 @@ public final class BroadcastQueue {             }             // Not running -- get it started, to be executed when the app comes up.-            if (DEBUG_BROADCAST)  Slog.v(TAG_BROADCAST,+           Slog.v(TAG_BROADCAST,                     "Need to start app ["                     + mQueueName + "] " + targetProcess + " for broadcast " + r);+           Slog.v(TAG_BROADCAST, "callerApp:"+r.callerApp);

对应log:

BroadcastQueue: Need to start app [foreground] com.android.music for broadcast BroadcastRecord{6bbc495 u-1 android.media.AUDIO_BECOMING_NOISY}
BroadcastQueue: callerApp:ProcessRecord{6bc6f30 551:system/1000}
ActivityManager: Start proc 2836:com.android.music/u0a29 for broadcast com.android.music/.MediaButtonIntentReceiver

从log可以看出是”android.media.AUDIO_BECOMING_NOISY” 这个broadcast触发了music进程的启动,调用的app是system,即system_server, pid是551, uid是1000
这里写图片描述

阅读全文
1 0
原创粉丝点击