2011-02-07 44 views
7

我要殺死在Android的類似任務的殺手運行所有任務...... 我直到現在做的是:機器人任務殺

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

    } 

與代碼的問題是,它返回的activityes只列出我的應用程序12次。 並沒有任務被殺......

有人可以幫我嗎? 謝謝!

+2

那麼,有沒有辦法在Android上殺死其他任務? @Cata:你有沒有發現如何做到這一點? – user489152 2011-07-18 13:38:39

回答

9

你不必殺死其他進程的權利;因此,killProcess()不適用於您的應用程序。

+0

是的,但它並沒有起作用關閉?我有android:name =「android.permission.GET_TASKS」權限,並在日誌中可以看到:com.svox.pico 發送信號。 PID:328 SIG:9 jp.co.omronsoft.openwnn 發送信號。 PID:141 IG:9 系統 發送信號。 PID:71 SIG:9 com.android.defcontainer 發送信號。 PID:176 SIG:9 com.android.launcher 發送信號。 PID:190 SIG:9 android.process.media 發送信號。 PID:260 SIG:9 com.android.quicksearchbox :發送信號。 PID:234 SIG:9 com.android.protips 發送信號。 PID:243 SIG:9 ... – Cata 2011-02-07 13:24:24

+0

@Cata:「是的,但它並沒有強迫關閉? - 沒有。請閱讀`killProcess()`的文檔。 – CommonsWare 2011-02-07 13:40:16

4

您正在使用(零)而不是i在您的循環中。

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

} 

乾杯

+0

是的,現在我已經注意到=))今天我很頭暈......問題是這不關閉應用程序。現在我可以看到它們,但是此代碼不關閉它們。 – Cata 2011-02-07 12:40:00

2

你可以殺回來的當前進程使用下面的代碼壓制:

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

你可以試試這個殺死你的任務或應用程序:

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

這適用於2.2及更高版本。

0

1加來體現

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

2 - 在你的代碼

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

注意,您的應用程序需要訪問亞行外殼(系統應用)