2011-02-07 11 views
7

Quiero matar a todas las tareas que se ejecutan en Android como el asesino de la tarea ... Lo que he hecho hasta ahora es:tarea androide matar

ActivityManager manager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
    List<RunningAppProcessInfo> activityes = ((ActivityManager) manager).getRunningAppProcesses(); 

    for (int i = 0; i < activityes.size(); i++){ 

     Log.e("APP: "+i, activityes.get(0).processName); 

     if (!activityes.get(0).processName.equals("app.android.myapp")){ 
      Process.killProcess(activityes.get(0).pid); 
     } 

    } 

El problema con el código es que regrese en las activityes lista solo mi aplicación por 12 veces Y no se está matando ninguna tarea ...

¿Alguien puede ayudarme por favor? ¡Gracias!

+2

Entonces, ¿no hay manera? para matar otras tareas en Android? @Cata: ¿Has descubierto cómo se puede hacer esto? – user489152

Respuesta

9

Usted no tiene el derecho de matar a otros procesos; por lo tanto, killProcess() no funciona para su aplicación.

+0

sí, pero no se suponía que hiciera una fuerza cerca? Tengo el permiso android: name = "android.permission.GET_TASKS", y en el registro puedo ver: com.svox.pico Señal de envío. PID: 328 SIG: 9 jp.co.omronsoft.openwnn Señal de envío. PID: 141 IG: 9 sistema Señal de envío. PID: 71 SIG: 9 com.android.defcontainer Señal de envío. PID: 176 SIG: 9 com.android.launcher Señal de envío. PID: 190 SIG: 9 android.process.media Señal de envío. PID: 260 SIG: 9 com.android.quicksearchbox : Señal de envío. PID: 234 SIG: 9 com.android.protips Señal de envío. PID: 243 SIG: 9 ... – Cata

+0

@Cata: "sí, pero no se suponía que hiciera una fuerza cerca?" -- no. Por favor, lea la documentación de 'killProcess()'. – CommonsWare

+0

Lo he leído y dice "Mate el proceso con el PID dado". y no dice que necesito algunos derechos ... – Cata

4

Estás usando (cero) en lugar de i dentro de su bucle.

for (int i = 0; i < activityes.size(); i++){ 

    Log.e("APP: "+i, activityes.get(i).processName); 

    if (!activityes.get(i).processName.equals("app.android.myapp")){ 
     Process.killProcess(activityes.get(i).pid); 
    } 

} 

Saludos

+0

Sí, ahora lo había notado =)) Estoy tan mareado hoy ... el problema es que esto no cierra las aplicaciones. Ahora puedo verlos pero este código no los cierra. – Cata

2

Puede matar el proceso actual sobre la espalda apoyada usando el siguiente código:

public void onBackPressed() { 
    super.onBackPressed(); 
    int pid = android.os.Process.myPid(); 
    android.os.Process.killProcess(pid); 
+0

muchas gracias !!!! – krisDrOid

+0

por qué en la pressesd atrás, es que algún tipo de truco ?! – Behnam

1

Usted puede probar esto de matar a su tarea o aplicación:

ActivityManager am = (ActivityManager) ctx 
       .getSystemService(ctx.ACTIVITY_SERVICE); 
am.killBackgroundProcesses(packageName); 

esto funciona para 2.2 o superior.

0

1- Agregar a manifestar

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/> 

2 - En el código

Runtime.getRuntime().exec("adb shell killall com.example.app"); 

nota que su aplicación necesita tener acceso a adb shell (aplicación del sistema)