我正在尝试从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。
谢谢。
答案 0 :(得分:0)
从谷歌小组找到答案。
由于Activity和ContextThemeWrapper没有实现registerReceiver(), 它将到达ContextWrapper:
ContextWrapper.registerReceiver() [mBase in ContextWrapper is ContextImpl]
ContextImpl.registerReceiver()
ActivityManagerNative.registerReceiver()
>> go through binder to
ActivityManagerService.registerReceiver()