2010-09-04 8 views
4

J'utilise eclipse. J'essaie de tuer un processus dans ma demande. Cependant, dans eclipse il ne semble pas connaître l'indice de killBackgroundProcess à partir de ActivityManager et il ne me laissera pas continuer. J'ai lu que vous devez avoir des autorisations pour tuer les processus en arrière-plan et que vous avez déjà ajouté l'autorisation qu'il n'a pas reconnue non plus à partir du manifeste. Voici le code que je suis en train d'utiliser:Android ActivityManager killBackgroundProcess ne fonctionne pas

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

La signature de méthode est "public void killBackgroundProcesses (String nompackage)". Pas "public void killBackgroundProcess (int processID)". – gtiwari333

Répondre

3

Assurez-vous que vous ciblez niveau de l'API 8, comme cette méthode n'a été ajoutée dans Android 2.2.

+0

Y a-t-il une meilleure façon de le faire alors? devrais-je utiliser la classe de processus? – ngreenwood6

+0

@ ngreenwood6: Les applications Android SDK ordinaires ne devraient pas tuer les processus. – CommonsWare

0

L'argument est nom de package pas processId. Essayez de lui passer quelque chose comme:

myActivity.getApplication().getPackageName() 

comme argument.

2

La signature de la méthode est

public void killBackgroundProcesses (String packageName)

Non

public void killBackgroundProcess (int processID)

Ce qui suit fonctionne CODE:

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

Mais cela ne fonctionne que pour> = API Niveau 8 comme cette méthode était un dded dans Android 2.2.

0

Assurez-vous d'avoir appelé killBackgroundProcesses avec l'activité la plus haute.

0

Vous pouvez essayer ces codes ci-dessous, cela fonctionne pour moi.

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