2010-09-04 5 views
4

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

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

Подпись метода «public void killBackgroundProcesses (String packageName)». Не «public void killBackgroundProcess (int processID)». – gtiwari333

ответ

3

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

+0

Есть ли лучший способ сделать это? следует ли использовать класс процессов? – ngreenwood6

+0

@ ngreenwood6: Обычные приложения Android SDK не должны убивать процессы. – CommonsWare

0

Аргумент - это имя пакета, а не processId. Попробуйте передать его примерно так:

myActivity.getApplication().getPackageName() 

в качестве аргумента.

2

Метод подпись

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.

0

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

0

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

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