2011-02-07 16 views
7

Chcę zabić wszystkie zadania, które działają w Android jak zabójca zadanie ... co zrobiłem do tej pory to:android zadanie zabić

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

    } 

Problem z kodem jest, że zwraca się w activityes listę tylko mojej aplikacji na 12 razy. I żadne zadanie nie jest zabijane ...

Czy ktoś może mi pomóc? Dziękujemy!

+2

Więc nie ma mowy zabijać inne zadania na Androida? @Cata: Czy dowiedziałeś się, jak można to zrobić? – user489152

Odpowiedz

9

Nie masz prawa do zabijania innych procesów; w związku z tym killProcess() nie działa dla Twojej aplikacji.

+0

tak, ale nie było konieczne, aby zamknąć siłę? Mam uprawnienie android: name = "android.permission.GET_TASKS", aw dzienniku mogę zobaczyć: com.svox.pico Wysyłanie sygnału. PID: 328 SIG: 9 jp.co.omsoft.openwnn Wysyłanie sygnału. PID: 141 IG: 9 system Wysyłanie sygnału. PID: 71 SIG: 9 com.android.defcontainer Wysyłanie sygnału. PID: 176 SIG: 9 com.android.launcher Wysyłanie sygnału. PID: 190 SIG: 9 android.process.media Wysyłanie sygnału. PID: 260 SIG: 9 com.android.quicksearchbox : Wysyłanie sygnału. PID: 234 SIG: 9 com.android.protips Wysyłanie sygnału. PID: 243 SIG: 9 ... – Cata

+0

@Cata: "tak, ale nie przymknęło to sił do zamknięcia?" - nie. Przeczytaj dokumentację dla 'killProcess()'. – CommonsWare

+0

Przeczytałem i przeczytałem "Zabij proces z danym PID". i nie mówi, że potrzebuję pewnych praw ... – Cata

4

Używasz (zero) zamiast i wewnątrz pętli.

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

} 

Cheers

+0

Tak, teraz zauważyłem =)) Dzisiaj mam zawroty głowy ... Problem polega na tym, że nie zamykają aplikacji. Teraz mogę je zobaczyć, ale ten kod nie zamyka ich. – Cata

2

Można zabić obecnego procesu na plecach wciśnięty za pomocą następującego kodu:

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

dzięki za dużo !!!! – krisDrOid

+0

dlaczego na plecach, był to jakiś hack ?! – Behnam

1

Można spróbować zabić swoje zadania lub aplikację:

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

to działa na 2.2 i wyżej.

0

1- dodawania manifestować

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

2 - W kodzie

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

pamiętać, że aplikacja musi mieć dostęp do adb shell (aplikacja systemowa)