【发布时间】:2013-10-11 18:34:00
【问题描述】:
我一直在研究 AOSP,并且注意到一些关于系统服务的东西。他们中的很多人喜欢像这样直接使用访问系统服务存根:
IDevicePolicyManager dpm = IDevicePolicyManager.Stub.asInterface(
ServiceManager.getService(Context.DEVICE_POLICY_SERVICE));
这是完成的,而不是使用 mContext 请求它们,如下所示:
DevicePolicyManager dpm = (DevicePolicyManager)
context.getSystemService(Context.DEVICE_POLICY_SERVICE);
现在起初我认为这可能是因为没有可用的上下文,但有。一个很好的例子是 deletePackageX 方法,它是 PackageManagerService 类的一部分。您可以将存根方法更改为 getSystemService 方法,并且一切仍然SEEMS正常工作。
应用程序不能使用存根方法自然有安全原因,但它们使用存根方法进行系统服务肯定有一些原因。
所以问题是他们为什么要在上下文中使用存根来获取其他系统服务?
【问题讨论】: