从Activity.java跟踪到ActivityManagerServices

时间:2014-12-02 02:29:28

标签: android activity-manager

我正在尝试从Activity类中跟踪registerReceiver()以了解流程。

我相信这个调用最终会在ActivityManagerService.registerReceiver()中结束。

根据我的理解,它应该涉及对SystemService的请求,因为ActivityManagerService存在于SystemService中。 问题是,我无法跟踪从Activity.java到ActivityManagerService的代码执行流程。

来自developer.android.com:

java.lang.Object
    ↳    android.content.Context
        ↳    android.content.ContextWrapper
            ↳    android.view.ContextThemeWrapper
                ↳    android.app.Activity

我一直在查看上面的所有类来跟踪registerReceiver()的实现,但找不到请求ActivityManagerService的系统服务的代码。

希望有人能解释如何触发ActivityManagerService。

谢谢。

1 个答案:

答案 0 :(得分:0)

从谷歌小组找到答案。

由于Activity和ContextThemeWrapper没有实现registerReceiver(), 它将到达ContextWrapper:

ContextWrapper.registerReceiver() [mBase in ContextWrapper is ContextImpl]
    ContextImpl.registerReceiver()
        ActivityManagerNative.registerReceiver()
             >> go through binder to 
             ActivityManagerService.registerReceiver()