我试图在 getRunningServices 中找到一个关于一些意想不到的结果的很好的解释。这是获取所有正在运行的 SERVICES的完整列表的简单代码:
ActivityManager actvityManager = (ActivityManager) myApp.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> services = actvityManager.getRunningServices(1000);
for (int i = 0; i < services.size(); i++) {
RunningServiceInfo service = services.get(i);
Log.d("PROCESS= " + service.process, "PID: " + service.pid + " UID: " + service.uid);
}
分析结果,我注意到有一个或多个PID=0的服务,例如com.google.android.talk和com.android.bluetooth。此外,还有多个服务实例,例如com.android.phone和com.google.android.gms。这是LogCat的一个示例:
显然,如果我想要一个真实的运行服务列表,我可以过滤掉所有重复的实例,也可以过滤掉所有 PID=0 的服务。但在此之前,这些是我的问题:
1.请有人向我解释为什么在getRunningServices中有多个相同服务的实例。
2.我知道任何 RUNNING 进程、应用程序、服务都有一个给定的 PID 号,那么,为什么getRunningServices会使用PID=0获取正在运行的服务?