1

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);
}

結果を分析すると、 com.google.android.talkcom.android.bluetoothなど、 PID=0のサービスが 1 つ以上あることに気付きました。また、com.android.phonecom.google.android.gmsなどのサービスの複数のインスタンスがあります。LogCatの例を次に示します。

実行中のすべてのサービス ログの結果の例

明らかに、実行中のサービスの実際のリストが必要な場合は、反復的なインスタンスをすべて除外し、PID=0 のすべてのサービスを除外することもできます。しかしその前に、これらは私の質問です:

1. getRunningServicesに同じサービスのインスタンスが複数ある理由を誰か説明してください。

2.実行中のプロセス、アプリケーション、サービスには特定の PID 番号があることを理解しまし

4

0 に答える 0