2011-05-18 19 views
9

Me gustaría poder iniciar una actividad o servicio y obtener el PID de ese proceso lo más rápido posible, de inmediato sería el mejor de los casos. ¿Tengo alguna otra opción que no sea explorar el directorio/proc, que luego conduce a una condición de carrera de cantidad variable entre el momento en que se inicia la actividad/servicio y el tiempo que me lleva encontrar lo que quiero en el proceso? directorio y comenzar a observar?Android obtener PID de otras aplicaciones

+1

Simplemente curioso, pero ¿para qué? – John

+1

Los componentes de aplicaciones se pueden ejecutar en procesos diferentes y los componentes de diferentes aplicaciones pueden compartir el mismo proceso, por lo que no hay una relación de uno a uno, por lo que no tiene sentido. –

+0

@john trabajando en un perfilador de aplicaciones por razones de seguridad. Es importante que pueda implementar mis herramientas de monitoreo y recopilar datos antes de que la aplicación se active. – MattC

Respuesta

11

Creo que necesitaría usar ActivityManager: vea http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html para la información del proceso. Usted podría:

  1. Obtenga todos los procesos de la aplicación en ejecución.
  2. Encuentra tu aplicación.
  3. Obtenga su PID.
+0

Gracias. Me temo que esto también conducirá a una condición de carrera entre cuando Inicié la aplicación para crear un perfil y obtener el PID, pero parece más limpio que navegar en el directorio/proc para obtener un +1 – MattC

+1

Ah: si buscas en otro proceso para esto, entonces sí, hay alguna posibilidad de que no lo hagas lo veo por un tiempo indefinido. No estoy seguro de que haya una alternativa mejor. Hough: avísame si encuentras uno. – Femi

+0

¿Hay alguna forma de lograr esto en Android API 21 y superior? No creo que RunningAppProcessInfo esté expuesto en Android L y superiores. –

-1

probar esto

int id= android.os.Process.myPid(); 
+3

Yo quería el PID de otros procesos, no el mío. – MattC

+3

esta respuesta se copia http://stackoverflow.com/questions/7454909/how-to-get-pid-of-android-application-with-out-using-adb-shell – devin

-1
for (RunningAppProcessInfo runningProInfo : runningProcInfo) { 

    int pid = runningProInfo.pid; 

    Log.e(TAG+"-pid", ""+pid); 

} 

Dónde TAG = "Name_Of_Your_Activity"

6
ActivityManager activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE); 
List<ActivityManager.RunningAppProcessInfo> pidsTask = activityManager.getRunningAppProcesses(); 

for(int i = 0; i < pidsTask.size(); i++) { 
    nameList.add(pidsTask.get(i).processName); 
    idList.add(pidsTask.get(i).uid); 
} 

pidsTask.get (i) .uid // Retorno PID para Aplicaciones (Proceso)

Cuestiones relacionadas