android task kill

浪子不回头ぞ 提交于 2019-11-27 06:49:20

问题


I want to kill all tasks that run in android like task killer... What I have done until now is:

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

    }

The problem with the code is that it returns in the activityes list only my app for 12 times. And no task is being killed...

Can somebody help me please? Thank you!


回答1:


You do not have the rights to kill other processes; hence, killProcess() does not work for your app.




回答2:


You're using 0 (zero) instead of i inside your loop.

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




回答3:


You can kill the current process on back pressed using the following code:

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



回答4:


You can try this to kill your task or app:

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

this works for 2.2 and up.




回答5:


1- Add to manifest

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

2 - In your code

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

note that your app need to have access to adb shell (system app)



来源:https://stackoverflow.com/questions/4921244/android-task-kill

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!