2011-02-07 11 views
7

voglio uccidere tutte le attività che vengono eseguite in Android come compito assassino ... Quello che ho fatto fino ad ora è:compito Android uccidere

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

    } 

Il problema con il codice è che ritorna nelle activityes elenca solo la mia app per 12 volte. E nessun compito viene ucciso ...

Qualcuno può aiutarmi per favore? Grazie!

+2

Quindi, non c'è modo uccidere altre attività su Android? @Cata: hai scoperto come questo potrebbe essere fatto? – user489152

risposta

9

Non si dispone dei diritti di uccidere altri processi; quindi, killProcess() non funziona per la tua app.

+0

sì ma non ha supposto di chiudere una forza? Ho permesso di android: name = "android.permission.GET_TASKS", e nel registro posso vedere: com.svox.pico Segnale di invio. PID: 328 SIG: 9 jp.co.omronsoft.openwnn Segnale di invio. PID: 141 IG: 9 system Segnale di invio. PID: 71 SIG: 9 com.android.defcontainer Segnale di invio. PID: 176 SIG: 9 com.android.launcher Segnale di invio. PID: 190 SIG: 9 android.process.media Segnale di invio. PID: 260 SIG: 9 com.android.quicksearchbox : Segnale di invio. PID: 234 SIG: 9 com.android.protips Segnale di invio. PID: 243 SIG: 9 ... – Cata

+0

@Cata: "sì ma non è stato il caso di fare una forza vicina?" -- no. Si prega di leggere la documentazione per 'killProcess()'. – CommonsWare

+0

L'ho letto e dice "Uccidi il processo con il PID specificato." e non dice che ho bisogno di alcuni diritti ... – Cata

4

Si sta utilizzando (zero) invece di i all'interno del proprio ciclo.

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

} 

Acclamazioni

+0

Sì, ora avevo notato =)) Oggi sono così stordito ... il problema è che questo non chiude le app. Ora posso vederli ma questo codice non li chiude. – Cata

2

Si può uccidere il processo in corso sul retro premuto utilizzando il seguente codice:

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

grazie mille !!!! – krisDrOid

+0

perché sul retro pressesd, è una sorta di hack ?! – Behnam

1

Si può provare questo per uccidere il vostro compito o app:

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

questo funziona per 2.2 e superiori.

0

1- Add manifestare

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

2 - Nel codice

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

nota che la vostra applicazione bisogno di avere accesso a adb shell (sistema di app)