Cette question me préoccupe (et peut-être beaucoup d'autres là-bas) car il n'y a pas de partie tournante dans mon téléphone.
Mon téléphone a un quad core, 3 Go de RAM et tellement d'espace de stockage, tous de type SSD, avec des vitesses de lecture / écriture incroyables.
Avec tout cela, Android (KitKat et Lollipop) prend environ 80 secondes pour démarrer. Cela prend beaucoup moins sur Ubuntu en utilisant systemd ou upstart. (certains utilisateurs signalent moins de 10 secondes de démarrage avec Ubuntu avec systemd et environ 20 secondes avec Upstart, avec des spécifications comme Intel i5 et RAM de 8 Gig)
Alors, qu'est-ce qui rend le démarrage d'Android si lent? Et puis-je faire quelque chose en tant qu'utilisateur pour accélérer le processus de démarrage?
Edit: selon le processus de démarrage expliqué ( https://android.stackexchange.com/a/29738/27870 ), il ne semble pas y avoir beaucoup de différences dans le processus de démarrage global par rapport à un système d'exploitation conventionnel comme Ubuntu. Où Android va-t-il mal dans le processus.
la source
Réponses:
Il y a quelques années, j'ai travaillé sur l'optimisation du temps de démarrage Android, en tant que développeur Android. Évidemment, dans le cadre de ce travail, nous devions d'abord analyser où Android passe du temps pendant le démarrage.
Voici les brèves conclusions:
Matériel utilisé :
OMAP3430 Board
qui est comme une carte de développement sur laquelle Stock Android est flashé. Sur un appareil commercial / de production réel, il y aura du matériel spécifique supplémentaire. Pour visualiser l'heure de démarrage, nous avons utilisé un outil de développement appelébootchart
Le plus de temps passé par Android se situe dans les 2 domaines suivants:
Pourquoi? Parce que le préchargement de la classe zygote est essentiel pour de bonnes performances du système après le démarrage. Ainsi, une fois que les classes sont chargées de toutes les applications, l'exécution de l'application est beaucoup plus rapide.
/system/app
,/system/framework
,/data/app
,/data/app-private
.Ensuite, il y a un composant appelé Activity Manager qui démarre différents services tels que le service de localisation, le service de téléphonie, etc. Et cela prend presque 11-12 secondes pour terminer cela.
Pourquoi? En effet, l'analyse du package peut en théorie effectuer une mise en cache de ses résultats après le premier démarrage et peut vérifier les failles de sécurité.
Si vous additionnez ces 2 fois, cela prend environ 35 secondes
Vous pouvez ignorer ces chiffres dans la journée et l'âge d'aujourd'hui, mais le point que ces chiffres indiquent est où le code Android AOSP passe du temps pendant le démarrage. Les OEM ont leur propre ensemble de matériel qui varie d'un appareil à l'autre.
Bien sûr, il existe d'autres initialisations matérielles et logicielles qu'Android doit faire après ces 2 étapes fastidieuses, ce qui peut allonger le temps de démarrage.
Pas beaucoup je suppose. La communauté des développeurs Android et les OEM travaillent toujours à accélérer le temps de démarrage, mais comme vous pouvez l'imaginer, ce n'est pas si facile et apporter des modifications pour optimiser le temps de démarrage peut finir par entraîner plus de temps de chargement des applications pendant les opérations normales, comme le suggère le cadre Android. ingénieur .
la source
Le démarrage Android est lent?
Mon téléphone est uniquement dual core avec 1G RAM (Zenfone 4) et je n'ai jamais ce problème. Démarrage à froid en ~ 60 secondes, redémarrage en 40 ish (CyannogenMod 12.1).
Cela dépend de la configuration et de ce que vous considérez comme le "temps de démarrage" . Mon ordinateur portable (i5 1st Gen, 4 Go de RAM avec disque tournant) est considéré comme utilisable (démarrage terminé) après environ 90 secondes. Bien sûr, je peux retarder / désactiver certains services pour obtenir un temps de démarrage plus rapide et les démarrer manuellement si nécessaire. Mais à mon avis, selon ma préférence, cela ne comptera pas comme utilisable .
Sur PC vs mobile
Il y a quelques différences que vous devriez considérer lors de la comparaison entre Linux et Mobile Linux. du CPU au noyau . Différences les plus notables:
3.18.10
alors que le noyau stable est actuellement à4.6.2
.Alors, qu'est-ce qui rend le démarrage d'Android si lent?
Pourquoi ne vérifions-nous pas? :)
Si vous avez accès à adb et activez déjà les options pour les développeurs , consultez le journal de démarrage à l'aide de
sur mon appareil, voici la sortie:
Comme vous pouvez le voir, le temps total de démarrage depuis le démarrage de la machine virtuelle jusqu'au dessin d'écran initial par le gestionnaire de fenêtres est d'environ 40 secondes. Le temps supplémentaire sur l'espace du micrologiciel et du noyau (sur votre réponse liée, cela se traduit par l'étape 1-4) n'est pas inclus.
Notez qu'il faut environ 18 secondes pour traiter l' apk (
boot_progress_pms_*
) du système entier , ce qui correspond à environ 45% du temps de démarrage, ce qui comprend:Donc, généralement, le temps de démarrage total dépend du nombre de packages (application) installés sur l'appareil. Plus d'application signifie plus d'attente pendant le processus pms. De plus, le démarrage des activités prend environ 5 secondes / 20% du temps de démarrage. Le reste n'est ni significatif ni modifiable en toute sécurité sans connaissance approfondie des comportements du système.
Puis-je faire quelque chose pour accélérer le processus de démarrage?
Sur l'amélioration du temps de démarrage
À mon avis, le réglage du temps de démarrage est à la fois non nécessaire et offre un gain insignifiant. Puisque votre téléphone restera théoriquement debout la plupart du temps; il est beaucoup plus important de maintenir la stabilité du système (avec le compromis d'un processus de démarrage plus long) pour garantir une disponibilité plus élevée et moins d'erreurs.
la source
adb logcat -d -b events -v threadtime | grep "boot"
renvoie vide. J'ai vérifié le redémarrage et toujours aucun journal correspondantboot
.adb logcat -d -b events -v threadtime | less
. Ou modifiez le tampon de l'anneau logcatPour ce que ça vaut, j'exécute Android-x86 dans une machine virtuelle sous Linux et il démarre en environ 22 secondes, ce qui est comparable à la plupart des distributions GNU / Linux et Windows 10 sur un lecteur SSD avec un processeur de bureau à quatre cœurs.
Je ne considère donc pas le temps de démarrage Android comme particulièrement lent.
la source