0

プロセス フローを理解するために、Activity クラスから registerReceiver() をトレースしようとしています。

呼び出しは ActivityManagerService.registerReceiver() で終わると思います。

私の理解では、ActivityManagerService は SystemService に存在するため、SystemService へのリクエストが必要になるはずです。問題は、Activity.java から ActivityManagerService へのコード実行フローを追跡できないことです。

developer.android.com から:

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

上記のすべてのクラスを調べて registerReceiver() の実装を追跡しましたが、ActivityManagerService の systemservice を要求するコードを見つけることができません。

ActivityManagerService がどのようにトリガーされるかを誰かが説明してくれることを願っています。

ありがとうございました。

4

1 に答える 1

0

Google グループからの回答が見つかりました。

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 に答える