Priorité processus Android: Faible niveau a été perdu kills

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.xmlpour 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.ProcessListclasse, 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éécrite onSaveInstanceState()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.xmlandroid: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 à utiliser stopForeground()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 

发布了49 篇原创文章 · 获赞 2 · 访问量 8586

Je suppose que tu aimes

Origine blog.csdn.net/yangjunjin/article/details/105030775
conseillé
Classement