当前位置:网站首页>L'offre de la grande usine est douce. Incroyable.

L'offre de la grande usine est douce. Incroyable.

2021-09-15 03:58:06 Développement d'un terminal mobile

Mode de démarrage

Pour mesurer avec précision APPHeure de début de, D'abord, nous devons comprendre APP Tout le processus de démarrage . Processus de démarrage, Il peut généralement être divisé en trois catégories: :

Grande usineOfferPrends le mou.,C'est incroyable._Programmeur

Aichi - Yi.Android Optimisation et analyse du démarrage du client

Comme le montre la figure ci - dessus,Pendant le démarrage,ColdEn mode, La plupart des choses sont faites dans le cycle de vie , Démarrage le plus long ,Donc,, Nous mesurons le démarrage à froid APPHeure de début.Pendant le démarrage, Comment déterminer quels cycles de vie affectent la vitesse de démarrage? ?

Processus de démarrage

Nous savons que,APP Démarrage et fonctionnement ,C'estLinux Le système crée des objets de processus et de composants ,Et dansUI Processus de traitement des messages de composants dans un thread .

Diagramme de démarrage :

Grande usineOfferPrends le mou.,C'est incroyable._Android_02

AppLe processus de démarrage de, Peut être divisé en trois étapes :

3.1 Créer un processus

QuandAPPAu démarrage,Si actuellementapp Le processus pour n'existe pas , Crée un nouveau processus ;App Après le démarrage du processus principal , Si vous démarrez un composant , Et le composant est configuré android:processPropriétés, Le processus que le composant exécute n'existe pas , Un nouveau processus est également créé .

Il est important de noter que, Si pendant la phase de démarrage , Dans les composants initialisés , Contient plusieurs processus , Crée plusieurs processus ,BindApplication L'opération est également répétée plusieurs fois

3.2 CréationUI Thread et Handler

Après la création du processus , Par réflexion ,Mise en œuvreActivityThreadFonction d'entrée,CréationHandler, Et dans le fil courant prepareMainLooper,Et dansHandler Message du composant reçu dans ,Voyons voirHandler Messages traités dans :

  • LAUNCH_ACTIVITY,Démarrage,Mise en œuvreActivity
  • RESUME_ACTIVITY,RepriseActivity
  • BIND_APPLICATION,Démarrageapp
  • BIND_SERVICE,ServiceCréation, onBind
  • LOW_MEMORY,Mémoire insuffisante, Récupérer le démon

sMainThreadHandlerMoyenne, Beaucoup de messages traités , C'est tout ce qu'il y a ici. , Mesures qui pourraient être prises pendant la phase de démarrage , Ces opérations sont effectuées dans Main ThreadMoyenne, Pour le démarrage , Obstructive .

ActivityCycle de vie, Doit naturellement être mis en œuvre au cours de la phase de démarrage ,Mais...,PourServiceCréation de,Trim_memoryRappel, Réception de radiodiffusion et autres opérations , Il faut se concentrer. , Son fonctionnement prend du temps .

3.3 Activity Fonctionnement et dessin

Les deux premiers processus , Créer des processus et UI Thread et Handler, Tout dépend du système. ,C'est exact.APP Pour les développeurs , Le temps d'exécution n'est pas contrôlé ,À ce stade,Mise en œuvreBindApplication,EtAcitivityCycle de vie, Peut être personnalisé par le développeur .

ActivityMise en œuvreonResumeAprès, Sera exécuté jusqu'à ViewRootImpl, Deux fois. performTraversals,Deuxième foistraversalEn fonctionnement,Sera exécutéperformDrawFonctionnement, Notification simultanée RenderThread Thread exécute le dessin .

Depuis les trois phases de démarrage ,Nous pouvons voir, Durée du démarrage , Le facteur déterminant est , Combien de temps faut - il pour faire quelque chose dans le fil principal ,Alors..., Nos efforts d'optimisation se concentrent principalement sur , Dépannage du travail fastidieux dans le fil principal , Et une optimisation raisonnable .AndroidTéléphone portable, Les ressources du système sont limitées , Trop de fils asynchrones ,Ils vont s'emparer.CPU, Provoque une augmentation de l'intervalle de temps d'exécution du fil principal .La même chose., État de la consommation de mémoire ,GCFréquence, Affecte également le temps de démarrage

Enfin,Si vous avez de bonnes méthodes d'apprentissage ou des suggestions, n'hésitez pas à laisser des commentaires positifs.,J'espère que tout le monde pourra apprendre ensemble.、Travailler ensemble、Progrès communs.

 CodeChinaOpen Source Project address:AndroidApprendrePDF+Vidéo de schéma+Documents d'entrevue+Notes sur le code source

Je vous souhaite bonne chance pour les prochains jours. Promotion et augmentation de salaire,Devenir Directeur général,En tant queCEO,Épouse Bai fumi.,Au Sommet de la vie!!

Quelles que soient les difficultés rencontrées,Ce n'est pas une raison d'abandonner!

Beaucoup de gens qui viennent d'entrer en contact avec l'industrie ou qui rencontrent des goulets d'étranglement,Il y a toujours des problèmes,Comme apprendre pendant un certain temps et se sentir désorienté,Je ne sais pas où commencer à apprendre

Si vous voyez ici,Si vous pensez que l'article est bien écrit, faites un compliment.?Si vous pensez que cela vaut la peine d'être amélioré,Laissez - moi un message.,Je vais m'enquérir.,Correction insuffisante,Merci beaucoup..

版权声明
本文为[Développement d'un terminal mobile]所创,转载请带上原文链接,感谢
https://chowdera.com/2021/09/20210915035446333j.html

随机推荐