Android ActivityManager killBackgroundProcess не работает

Я использую затмение. Я пытаюсь убить процесс в своем приложении. Однако в eclipse, похоже, он не знает подсказки killBackgroundProcess от ActivityManager и не позволит мне продолжить. Я читал, что у вас должны быть разрешения на уничтожение фоновых процессов, и уже добавил разрешение, которое он не распознал ни из манифеста. Вот код, который я пытаюсь использовать:

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

person ngreenwood6    schedule 04.09.2010    source источник
comment
Сигнатура метода — public void killBackgroundProcesses (String packageName) . Not public void killBackgroundProcess (int processID) .   -  person gtiwari333    schedule 14.10.2011


Ответы (5)


Убедитесь, что вы ориентируетесь на уровень API 8, так как этот метод был добавлен только в Android 2.2.

person CommonsWare    schedule 04.09.2010
comment
Есть ли лучший способ сделать это тогда? я должен использовать класс процесса? - person ngreenwood6; 05.09.2010
comment
@ngreenwood6: Обычные приложения Android SDK не должны убивать процессы. - person CommonsWare; 05.09.2010

Сигнатура метода

public void killBackgroundProcesses (String packageName)

Нет

public void killBackgroundProcess (int processID)

Ниже приведен рабочий код:

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

Но это работает только для >= API уровня 8, так как этот метод был добавлен в Android 2.2.

person gtiwari333    schedule 14.10.2011

Аргументом является имя пакета, а не идентификатор процесса. Попробуйте передать что-то вроде:

myActivity.getApplication().getPackageName()

как аргумент.

person james    schedule 09.11.2010

Убедитесь, что вы вызываете killBackgroundProcesses с самой верхней активностью.

person kyildizoglu    schedule 20.03.2013

Вы можете попробовать эти коды ниже, это работает для меня.

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]);
                    }
                }
            }
    }
person SadieYu    schedule 27.05.2014