0

我正在尝试从 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。

谢谢你。

4

1 回答 1

0

从谷歌群组中找到答案。

由于Activity和ContextThemeWrapper没有实现registerReceiver(),所以会到达ContextWrapper:

ContextWrapper.registerReceiver() [mBase in ContextWrapper is ContextImpl]
    ContextImpl.registerReceiver()
        ActivityManagerNative.registerReceiver()
             >> go through binder to 
             ActivityManagerService.registerReceiver()
于 2014-12-04T04:17:52.357 回答