Comment tuer la tâche en cours d'exécution dans Android
Je suis en train de construire un task killer le type d'application dans android. Je peux afficher la liste des tâches en cours d'exécution à l'aide de ActivityManager mais face à problème en tuant à la tâche.
Ici est ce que je fais pour obtenir la liste des tâches en cours d'exécution :
ActivityManager am = (ActivityManager) context.
getSystemService(Activity.ACTIVITY_SERVICE);
List<RunningTaskInfo> a=am.getRunningTasks(Integer.MAX_VALUE);
PackageManager pack=this.getPackageManager();
for(int i=0;i<a.size();i++){
String packageName = a.get(i).topActivity.getPackageName();
Drawable d=null;
String appName="";
try {
d=pack.getApplicationIcon(packageName);
appName=(String) pack.getApplicationLabel(pack.getApplicationInfo(packageName,PackageManager.GET_META_DATA));
} catch (NameNotFoundException e) {
e.printStackTrace();
}
packName.add(packageName); //arraylist of package name
apps.add(appName); //arraylist of app name
icons.add(d); //arraylist of icons
}
Il a travaillé pour moi, Mais maintenant que je suis en train de tuer la tâche à l'aide de killBackgroundProcesses :
am.killBackgroundProcesses(package name);
Il n'a pas de travail . Aussi killBackgroundProcesses méthode est disponible dans l'API de niveau 2.2 alors comment puis-je effectuer la même tâche dans les précédents API de niveau tel que 1,6 etc.
Est-il un autre moyen d'afficher les applications actives et de les tuer .
S'il vous plaît aider .
Merci beaucoup.
source d'informationauteur Dinesh Sharma
Vous devez vous connecter pour publier un commentaire.
Personne ne peut tuer, sauf OS Android lui-même.
Plus de la task killer sur l'android market ne tuez pas l'application qu'il suffit de redémarrer le processus de
en utilisant
lorsque cette méthode est appelée par votre activité, le système d'exploitation a immédiatement appelé
savedInstanceState
et enregistrer l'état de l'activité que vous voulez tuer. Maintenant, ce processus estsupprimé de la mémoire et de l'OS l'a sauvé de l'état.Maintenant quand la prochaine fois utilisateur de commencer cette activité,
commencera à partir d'où il a été tué ou en d'autres termes redémarré. Vous pouvez le vérifier de toute
le gestionnaire des tâches qu'ils ne tuent pas le processus, car on ne peut le faire. De plus, cette méthode
travail dans ICS.
pour la méthode ci-dessus, vous pouvez regarder ici . Autant que je sache
killBackgroundProcesses (String packageName)
est pour API 8 et ci-dessus.En un mot, la Tâche Automatique des Tueurs de travail en interrogeant le système d'exploitation pour obtenir une liste des processus en cours d'exécution et la mémoire qu'ils consomment. Ensuite, soit avec un algorithme intelligent ou avec la saisie de l'utilisateur la Tâche des Tueurs émettre un appel vers le système de raconter le système à tuer le processus. Il y a deux api, vous pouvez le faire.
Ils sont
Ce premier fonctionne en invoquant le Processus.killProcess(int pid) où pid est l'identifiant unique d'un processus spécifique. Android tue les processus de la même manière que linux n'; cependant, un utilisateur ne peut tuer les processus dont ils sont propriétaires. Dans Android, chaque application est exécutée avec un UID unique, ID d'utilisateur. Donc, en utilisant cette API, une Application ne peut tuer son propre processus, donc la suivante explication dans la doc de Processus.killProcess(int pid):
Lorsque cette méthode est appelée la les signaux est généré par le système d'exploitation et l'ensemble du processus. Lorsqu'un processus reçoit un signal de l'OS, elle doit gérer le signal ou immédiatement mourir. Des signaux tels que les
SIG_KILL
ne peuvent pas être traitées et entraîner la mort immédiate du destinataire processus. Si vous voulez tuer les processus que vous n'avez pas de privilèges pour les tuer, c'est à dire ce n'est pas votre processus, vous devez remonter vos privilèges de l'utilisation de sudo (ce qui nécessiterait des privilèges root sur l'appareil).La deuxième API travaille en racontant l'
ActivityManager
que vous wan pour tuer les processus associés à un Forfait spécifique. Cette API permet de contourner la nécessité pour votre UID pour correspondre à l'UID du processus, parce il oblige l'utilisateur à accepter les KILL_BACKGROUND_PROCESSES autorisation. Cette autorisation signaux pour le système d'exploitation qu'une application a été approuvée par l'utilisateur comme un tueur de tâches. Quand un tueur de tâches veut tuer une application, il raconte l'OS pour le faire se déplacer le problème de ne pouvoir tuer les processus que vous possédez.Dans l'Android Docs il est dit que cette API utilise en fait le premier de ces Processus.killProcess API
Espère Que Cela Aide.
Avez-vous saisissez ci-dessous l'autorisation dans le fichier manifest?