理解getSystemService()和getApplicationContext()之间的区别

时间:2016-09-26 21:30:10

标签: android api

TextToSpeech 类为例,其构造函数需要一个类型为 Context 的参数。我的问题是, getSystemService 除了 STRING CONSTANT 和type-casted之外没有其他参数和 getApplicationContext 之间的区别是什么?传入一个类,如 TextToSpeech

1 个答案:

答案 0 :(得分:1)

总之,

  • getApplicationContext()返回在专用流程中运行的当前应用程序的上下文,而
  • getSystemService(String name) "按名称" 返回系统级服务的句柄,其中系统级服务在单独的进程中运行"句柄" 允许通过进程间通信(IPC)调用服务方法。

我希望您所谈论的差异是指Android安全模型,其中AFAIK分为两类,用于调用由servicemanager管理的系统级服务:< / p>

  1. 可以访问/使用的系统级服务,但没有应用程序方/清单文件的特定权限(例如LAYOUT_INFLATER_SERVICEPackageManager和其他);
  2. 要成功访问应用程序(或其托管Linux进程)明确要求特定权限( s )的系统级服务。权限由设备的物理用户授予。
  3. 由于访问第1类的系统级服务不需要特定权限,因此可以使用需要Context作为参数来访问服务的附加抽象层来包装与它们的交互(例如{{ 3}})。