I. Définition
- système Android, quand il y a un manque de mémoire tuer certains programmes (ou processus) pour libérer la mémoire de programme à utiliser a besoin pour fonctionner.
- Plus la priorité du processus, va enfin tuer, au contraire, la plus faible priorité est mise à mort.
Deux. Système Android dans le processus existant
processus 1.Zygote
Zygote, la moyenne d'oeuf fécondé ... dans le système Android, le processus d'application de tous les services du système et des processus est un processus zygote Fork (élevage) sur.
processus principal 2.App
Chaque application est en cours d'exécution dans un processus séparé, bien sûr, ce processus est un processus Zygote sur la fourche. Nom de l'application est le nom du package du processus par la direction AMS (ActivityManagerService) Soit dit en passant envoyer BroadcastReceiver est également fait par l'AMS.
processus de travail 3.App
App peut avoir un certain nombre de processus, en particulier AndroidManifest.xml
pour l'activité ou service effectué un fichier de configuration android:process=""
. De même, le processus est assisté par la fourchette Zygote par la direction AMS.
processus 4.Native
exécuter Android Dalvik dans une machine virtuelle, NDK permet à l'utilisateur d'exécuter un programme partiel en utilisant le code natif langage similaire au C / C ++ ou similaire. Fourche par le NDK Le processus est appelé processus natif. degré natif élevé de la liberté ne peut pas AMS la gestion des processus. Un autre, NDK peut également être utilisé pour faire le processus maintenir en vie.
La troisième priorité. Des processus système Android
Priorité Définit les processus de système Android dans la com.android.server.am.ProcessList
classe, cette classe se trouvent dans le SDK.
Principalement dans les définitions de priorité suivants (valeur oom_adj):
nom | explication |
---|---|
UNKNOWN_ADJ = 16 | Fixer le cache de niveau le plus bas de côté peut être configuré pour utiliser cette |
CACHED_APP_MAX_ADJ = 15 | Activité attente invisible le processus est un processus d'arrière-plan, le système manque de mémoire Tuer |
CACHED_APP_MIN_ADJ = 9 | Procédé mise en cache, un processus qui est vide |
SERVICE_B_ADJ = 8 | processus inactif |
PREVIOUS_APP_ADJ = 7 | Commutation processus, le processus enregistré avant des applications de commutation |
HOME_APP_ADJ = 6 | Accueil d'interagir avec le processus |
SERVICE_ADJ = 5 | Service de traitement contient, en général, Tuer l'impact sur les utilisateurs est pas trop grand |
HEAVY_WEIGHT_APP_ADJ = 4 | processus de pondération élevée, le système fonctionne en arrière-plan, mais essayez de ne pas tomber tuer |
BACKUP_APP_ADJ = 3 | processus de sauvegarde géré, tuer est une mauvaise idée |
PERCEPTIBLE_APP_ADJ = 2 | Il peut être perçu par le processus utilisateur, tels que les lecteurs de musique |
VISIBLE_APP_ADJ = 1 | processus visible, l'utilisateur peut voir le processus, mais pas nécessairement un processus de premier plan, il peut être l'activité couverte |
FOREGROUND_APP_ADJ = 0 | processus de premier plan en cours d'exécution dans le processus d'avant-plan App |
PERSISTENT_SERVICE_ADJ = -11 | Les importants processus, systèmes ou processus importants processus de liaison |
PERSISTENT_PROC_ADJ = -12 | Les processus de base, les systèmes de processus continus, tels que le téléphone |
SYSTEM_ADJ = -16 | processus système |
NATIVE_ADJ = -17 | l'administration du système d'aide natif des processus pertinents |
Voir la priorité du processus:
//oom_adj的值就是进程的优先级
//查看oom_adj值
cat /proc/${pid}/oom_adj
Quatre. Système Android processus commun
De la priorité la plus élevée à la plus faible:
1. Procédé de premier plan (processus de premier plan)
Rencontrer les conditions suivantes soient considérées comme un processus de premier plan:
- processus d'activité est titulaire d'une interaction positive avec l'utilisateur.
- Processus détient l' une des conditions suivantes sont remplies Service:
1, et l' activité est en interaction de liaison,
2,startForeground()
commencer à la réception,
3, service met en œuvre des méthodes du cycle de vie,onCreate(), onStart(), or onDestroy()
. - L' exécution d' un processus détient
onReceive()
le BroadcastReceiver.
2. Procédé visible (Visible processus)
- Procédé détient une activité visible, comme boîte de dialogue est bloqué dans l'
onPause()
état d'activité. - Processus et tenir un visible (ou au premier plan) l'activité de liaison de service.
3 processus de service (processus de service)
- Utiliser un processus tient
startService()
ouvert le service, et ne pas appartenir à deux ou plusieurs services de priorité plus élevée, il est considéré comme un processus de service. Tels que la musique de fond, télécharger des fichiers.
4 Procédé de fond (processus d'arrière-plan)
- Processus tient appel invisible
onStop()
mais n'a pas appeléonDestroy()
l'activité, est considéré comme un processus d'arrière - plan. La raison pour cela est de sauver une partie de l' activité pour l'utilisateur de sélectionner et sauter. Ils seront stockés dans un LRU (moins récemment utilisé) liste, il peut tomber tuer la première mémoire Activité système insuffisante peut être réécriteonSaveInstanceState()
pour stocker des données avant qu'il ne soit tuer.
5 processus vide
- Processus ne contient pas de composants actifs, le processus est considéré comme vide. La raison pour laquelle la préservation de ce processus est la nécessité de la mise en cache.
V. améliorer la priorité du processus
- Configurer AndroidManifest.xml
android:persistent="true"
- Ouvrir fil pour faire l'opération de temps dans le service, le processus de service sera jugé.
startForeground()
Commencez la réception, pensez à utiliserstopForeground()
fermé.- NotificationManager interagir, laisser le processus se processus perceptible.
- Diffusion, pour éviter de devenir processus vide.
- Utilisez processus natif pour rendre le processus garder en vie (juste une pensée).
références:
Android processus de plate - forme App priorité
sommer Android place - des moyens prioritaires de processus et de priorité à améliorer ( l' immortalité service de la loi, autant que possible
Reproduit: https://www.jianshu.com/p/35727ad2296a