Android 所有正在运行的服务(解释性)

Android 所有正在运行的服务(解释性),android,service,pid,activity-manager,Android,Service,Pid,Activity Manager,我试图找到一个关于getRunningServices中一些意外结果的好解释。这是一个简单的代码,可以获取所有运行服务的完整列表: ActivityManager actvityManager = (ActivityManager) myApp.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningServiceInfo> services = actvityManager.getRunning

我试图找到一个关于getRunningServices中一些意外结果的好解释。这是一个简单的代码,可以获取所有运行服务的完整列表:

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);
}
ActivityManager actvityManager=(ActivityManager)myApp.getSystemService(Context.ACTIVITY_服务);
List services=actvityManager.getRunningServices(1000);
对于(int i=0;i
分析结果,我注意到有一个或多个服务的PID=0,比如com.google.android.talk和com.android.bluetooth。此外,还有多个服务实例,如com.android.phone和com.google.android.gms。以下是LogCat的一个示例:

显然,如果我想要一个运行服务的真实列表,我可以过滤掉所有重复的实例,也许可以过滤掉PID=0的所有服务。但在此之前,这些是我的问题:

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);
}
1.请有人向我解释一下为什么在getRunningServices中有同一服务的多个实例


2.我知道任何正在运行的进程、应用程序、服务都有一个给定的PID编号,因此,为什么getRunningServices使用PID=0来获取正在运行的服务呢?

另一方面,列出GetRunningAppProcess中使用的所有运行应用程序,这是完美的。我不理解getRunningServices的结果。另一方面,在GetRunningAppProcess中列出所有正在运行的应用程序,这很完美。我不明白getRunningServices的结果。