私は AOSP をいじっていて、System Services について何かに気づきました。それらの多くは、次のようにシステム サービス スタブに直接アクセスすることを好みます。
IDevicePolicyManager dpm = IDevicePolicyManager.Stub.asInterface(
ServiceManager.getService(Context.DEVICE_POLICY_SERVICE));
これは、次のように mContext を使用してリクエストする代わりに行われます。
DevicePolicyManager dpm = (DevicePolicyManager)
context.getSystemService(Context.DEVICE_POLICY_SERVICE);
最初は、利用可能なコンテキストがないためかもしれないと思っていましたが、あります。この優れた例は、PackageManagerService クラスの一部である deletePackageX メソッドにあります。スタブ メソッドを getSystemService メソッドに変更すると、すべてが正常に動作するように見えます。
アプリがスタブ方式を使えないのには当然セキュリティ上の理由がありますが、システムサービスにスタブ方式を使っているのには何らかの理由があるはずです。
問題は、他のシステム サービスを取得するために、コンテキストを介してスタブを使用する理由です。