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
-
Process.killProcess(int pid)
ActivityManager.killBackgroundProcesses(String packageName)
Ce premier fonctionne en invoquant Process.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 unique UID (Identifiant utilisateur). Les applications utilisant cette API, une Application ne peut tuer de leurs propres processus, d'où la suite de l'explication dans les docs pour Process.killProcess(int pid)
:
Tuer le processus avec le PID. Notez que, bien que cette API permet
- nous pour une demande de tuer tous les processus sur la base de son PID, le noyau
encore imposer la norme de restrictions sur ce qui Pid que vous êtes réellement en mesure
pour tuer. Typiquement, cela signifie que le processus de l'exécution de l'appelant
forfaits/applications et de tout autre processus créés par cette application;
les paquets partageant un même UID sera également en mesure de se tuer les uns les autres
les processus.
Lorsque cette méthode est appelée le signal est généré par le système d'exploitation et envoyé au 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 SIG_KILL
ne peut pas être traitée 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 changer d'utilisateur ou d'intensifier vos privilèges (sur android cela nécessite les privilèges de root sur l'appareil).
La deuxième API travaille en racontant l'construite en 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 , car il oblige l'utilisateur à accepter l' 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 de tuer le processus qui permet à une application de contourner le problème de ne pouvoir tuer les processus dont il est propriétaire.
Dans l' Android Docs il est dit que cette API utilise en fait le premier Process.killProcess
API
Le système immédiatement tuer tous les processus d'arrière-plan associé
avec le paquet donné. C'est le même que le noyau de tuer ceux
les processus pour récupérer de la mémoire; le système va redémarrer
ces processus dans l'avenir en tant que de besoin.
Si vous voulez en savoir plus je vous suggère de lire sur les Signaux Posix et Linux, La commande kill