Diese Frage ist für mich (und vielleicht für viele da draußen) von Belang, da mein Telefon keinen sich drehenden Teil enthält.
Mein Telefon verfügt über einen Quad Core, 3 Gig RAM und so viel Speicherplatz, alle SSD-ähnlich, mit erstaunlichen Lese- / Schreibgeschwindigkeiten.
Mit all dem benötigt Android (sowohl KitKat als auch Lollipop) etwa 80 Sekunden, um vollständig zu starten. Unter Ubuntu dauert es mit systemd oder upstart viel weniger. (Einige Benutzer berichten von einer Startzeit von weniger als 10 Sekunden mit Ubuntu mit systemd und etwa 20 Sekunden bei Verwendung von Upstart mit Spezifikationen wie Intel i5 und RAM von 8 Gig.)
Was macht Android so langsam booten? Und kann ich als Benutzer etwas tun, um den Startvorgang zu beschleunigen?
Bearbeiten: Laut dem erklärten Bootvorgang ( https://android.stackexchange.com/a/29738/27870 ) scheint es keine großen Unterschiede im gesamten Bootvorgang im Vergleich zu herkömmlichen Betriebssystemen wie Ubuntu zu geben. Wo geht Android dabei schief?
quelle
Antworten:
Vor ein paar Jahren habe ich als Android-Entwickler an der Optimierung der Android-Startzeit gearbeitet. Als Teil dieser Arbeit mussten wir natürlich zunächst analysieren, wo Android während des Bootens Zeit verbringt.
Nachfolgend die kurzen Ergebnisse:
Verwendete Hardware :
OMAP3430 Board
Dies ist wie ein Entwicklungsboard, auf dem Stock Android geflasht ist. Auf dem tatsächlichen kommerziellen / Produktionsgerät wird es zusätzliche spezifische Hardware geben. Um die Startzeit zu visualisieren, haben wir ein Entwicklertool namens verwendetbootchart
Die meiste Zeit verbringt Android in den folgenden 2 Bereichen:
Warum? Denn das Vorladen der Zygote-Klasse ist für eine gute Leistung des Systems nach dem Start unerlässlich. Sobald also Klassen aller Apps geladen sind, ist die Laufzeit der App viel schneller.
/system/app
,/system/framework
,/data/app
,/data/app-private
.Als nächstes gibt es eine Komponente namens Activity Manager, die verschiedene Dienste wie Standortdienst, Telefoniedienst usw. startet. Der Abschluss dauert fast 11 bis 12 Sekunden .
Warum? Denn der Paket-Scan kann theoretisch nach dem ersten Start einige Ergebnisse zwischenspeichern und nach Sicherheitslücken suchen.
Wenn Sie diese 2 Mal addieren, sind es ungefähr 35 Sekunden
Sie können diese Zahlen in der heutigen Zeit ignorieren, aber der Punkt, den diese Zahlen angeben, ist, wo der Android AOSP-Code während des Startvorgangs Zeit verbringt. OEMs verfügen über eine eigene Hardware, die von Gerät zu Gerät unterschiedlich ist.
Natürlich gibt es andere Hardware- und Software-Initialisierungen, die Android nach diesen zwei zeitaufwändigen Schritten durchführen muss, wodurch die Startzeit weiter verlängert werden kann.
Nicht viel, denke ich. Die Android-Entwickler-Community und die OEMs arbeiten immer noch daran, die Startzeit zu verkürzen. Wie Sie sich vielleicht vorstellen können, ist dies jedoch nicht so einfach. Änderungen zur Optimierung der Startzeit können dazu führen, dass während des normalen Betriebs mehr App-Ladezeit entsteht, wie vom Android-Framework angedeutet Ingenieur .
quelle
Android Boot ist langsam?
Mein Telefon ist nur Dual Core mit 1G RAM (Zenfone 4) und ich habe dieses Problem nie. Kaltstart in ~ 60 Sekunden, Neustart in 40 Sekunden (CyannogenMod 12.1).
Dies hängt von der Konfiguration und der von Ihnen als "Startzeit" betrachteten Zeit ab . Mein Laptop (i5 1st Gen, 4 GB RAM mit sich drehender Festplatte) gilt nach ca. 90 Sekunden als verwendbar (beendetes Booten). Natürlich kann ich einige Dienste verzögern / deaktivieren, um eine schnellere Startzeit zu erzielen und sie bei Bedarf manuell zu starten. Aber aus meiner Sicht, basierend auf meiner Präferenz, wird das nicht als brauchbar gelten .
Auf PC vs Mobile
Es gibt einige Unterschiede, die Sie beim Vergleich zwischen PC und Mobile Linux berücksichtigen sollten. von der CPU bis zum Kernel . Bemerkenswerteste Unterschiede:
3.18.10
während Stable - Kernel ist derzeit auf4.6.2
.Was macht Android so langsam booten?
Warum überprüfen wir nicht? :) :)
Wenn Sie Zugriff auf adb haben und bereits Entwickleroptionen aktivieren , überprüfen Sie das Startprotokoll mit
Auf meinem Gerät ist dies die Ausgabe:
Wie Sie sehen können, beträgt die Gesamtstartzeit vom VM-Start bis zur ersten Bildschirmzeichnung durch den Fenstermanager ~ 40 Sekunden. Zusätzliche Zeit für Firmware- und Kernel-Speicherplatz (auf Ihrer verknüpften Antwort wird dies in Schritt 1-4 übersetzt) ist nicht enthalten.
Beachten Sie, dass die Verarbeitung von apk (
boot_progress_pms_*
) des gesamten Systems ca. 18 Sekunden dauert. Dies entspricht ~ 45% der Startzeit . Dazu gehören:Daher hängt die Gesamtstartzeit im Allgemeinen von der Anzahl der auf dem Gerät installierten Pakete (App) ab. Mehr App bedeutet längeres Warten während des PMS-Prozesses. Darüber hinaus dauert das Starten von Aktivitäten ~ 5 Sekunden / 20% der Startzeit. Der Rest ist ohne signifikante Kenntnis des Systemverhaltens weder signifikant noch sicher veränderbar.
Kann ich irgendetwas tun, um den Startvorgang zu beschleunigen?
Zur Verbesserung der Startzeit
Meiner Meinung nach ist das Optimieren der Startzeit sowohl unnötig als auch ein unbedeutender Gewinn. Da Ihr Telefon theoretisch die meiste Zeit wach bleibt ; Es ist weitaus wichtiger, die Systemstabilität (mit dem Kompromiss eines längeren Startvorgangs) aufrechtzuerhalten, um eine höhere Betriebszeit und weniger Fehler zu gewährleisten.
quelle
adb logcat -d -b events -v threadtime | grep "boot"
gibt leer zurück. Ich habe beim Neustart nachgesehen und immer noch keine passenden Anmeldungen gefundenboot
.adb logcat -d -b events -v threadtime | less
. Oder ändern Sie den Logcat-RingpufferFür das, was es wert ist, starte ich Android-x86 in einer virtuellen Maschine unter Linux und es startet in ungefähr 22 Sekunden, was den meisten GNU / Linux-Distributionen und Windows 10 auf einem SSD-Laufwerk mit einer Quad-Core-Desktop-CPU entspricht.
Daher halte ich die Android-Startzeit nicht für besonders langsam.
quelle