Android ActivityManager killBackgroundProcess not

2019-05-06 20:41发布

问题:

I am using eclipse. I am trying to kill a process in my application. However, in eclipse it does not seem to know the hint for killBackgroundProcess from the ActivityManager and it will not let me proceed. I read that you have to have permissions to kill background processes and already added the permission which it did not recognize either from the manifest. Here is the code that I am trying to use:

ActivityManager activityManager = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcess(myProcessId);

回答1:

Make sure you are targeting API level 8, as that method was only added in Android 2.2.



回答2:

The method signature is

public void killBackgroundProcesses (String packageName)

Not

public void killBackgroundProcess (int processID)

The following is working CODE :

public static void killThisPackageIfRunning(final Context context, String packageName){
    ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
    activityManager.killBackgroundProcesses(packageName);
}   

But this works only for >= API Level 8 as this method was added in Android 2.2.



回答3:

The argument is package Name not processId. Try passing it something like:

myActivity.getApplication().getPackageName()

as an argument.



回答4:

Be sure that your calling killBackgroundProcesses with the topmost Activity.



回答5:

You can try these codes below, it works for me .

public static void clearMemory(Context context) {
        ActivityManager activityManger = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> list = activityManger.getRunningAppProcesses();
        if (list != null)
            for (int i = 0; i < list.size(); i++) {
                ActivityManager.RunningAppProcessInfo apinfo = list.get(i);

                String[] pkgList = apinfo.pkgList;

                if (apinfo.importance > ActivityManager.RunningAppProcessInfo.IMPORTANCE_PERCEPTIBLE ) {
                    for (int j = 0; j < pkgList.length; j++) {
                        activityManger.killBackgroundProcesses(pkgList[j]);
                    }
                }
            }
    }