Ich besitze ein Samsung Galaxy S Relay 4G mit Android 4.1.2. Außerdem habe ich adb auf einem PC installiert.
Wenn ich den Ein- / Ausschalter lange drücke und dann auf "Neu starten" tippe, dauert das Herunterfahren meines Telefons etwa zehn Sekunden. Dann startet es sich neu.
Wenn ich adb reboot
stattdessen eintrete , wird das Telefon viel schneller heruntergefahren: Das Herunterfahren dauert nur etwa eine Sekunde. Dann wird es neu gestartet.
Meine Fragen:
Warum ist
adb reboot
so viel schneller?Überspringt es einfach die Animation zum Herunterfahren des Mobilfunknetzbetreibers oder werden auch einige wichtigere Vorgänge übersprungen?
Kann ich
adb reboot
jedes Mal verwenden, wenn ich das Telefon neu starten möchte, oder hat dies einen Nachteil?(Optional) Woher wissen Sie das?
Weitere Informationen (Sie können dies überspringen)
Ich habe einige Nachforschungen angestellt, bevor ich diese Frage gestellt habe. Aber ich bin immer noch nicht aufgeklärt. Lassen Sie mich Ihnen zeigen , was ich habe zu entdecken.
Tetsuyuki Kobayashi von Kyoto Microcomputer Co. erklärt in Folie 8 dieser PDF-Diashow, dass adb aus drei Teilen besteht: einem Client, einem Server und einem Daemon. Der Client und der Server laufen auf einem PC. Der Daemon läuft auf einem Telefon. In Folie 11 erklärt er, dass alle drei Teile aus einem Quellverzeichnis bestehen. (Es ist dieses Verzeichnis .)
Ich habe versucht , in diesem Quellverzeichnis nach dem Wort zu suchenreboot
und Teile von services.cpp zu lesen , aber ich konnte immer noch nicht herausfinden, was adb reboot
tatsächlich funktioniert, welche Bytes es über die Leitung sendet oder welchen Code das Telefon ausführt, wenn es ausgeführt wird empfängt diese Bytes. Ich habe auch keine Antwort auf meine Fragen gefunden.
Siehe auch : "Wie starte ich Android am besten über die Befehlszeile (aus der Ferne) neu?"
setprop sys.powerctl reboot
tun würde. Ein unsauberes Herunterfahren, gefolgt von der Anweisung, einen Neustart durchzuführen.Antworten:
Basierend auf dem
platform/system/core
Repository, das Sie oben verlinkt haben, glaube ich, dass sich der Schlüssel in befindetlibcutils/android_reboot.c
. Und wichtige Definitionen sind ininclude/cutils/android_reboot.h
; nämlich:Normalerweise dauert der Vorgang im normalen Neustartmodus (über die Gerätetaste usw.) länger, da (ich nehme an) die Partition nicht gemountet, alle Anwendungen beendet und alle offenen Knoten geschlossen werden, wie beim Herunterfahren. Das
adb reboot
kann mit dem Linux-Neustartbefehl verglichen werden (von wo es kommt): Es leert nur die Festplatte und startet den Neustart, ohne zuvor Prozesse zu beenden oder Dateisysteme abzuhängen. Ich sehe auch einen schnellen Remount-Befehl, der ausgegeben wird, um die Festplatte (in unserem Fall den Speicherteil des Systems) vor dem Neustart in den Ro-Modus zu versetzen.Ich glaube auch, dass der ausgegebene Befehl
kernel_restart()
im Kernel eingebettet ist. Siehe zum Beispiel http://www.phonesdevelopers.com/1730094/ . Überprüfen Sie auchmachine_restart
Anrufe.quelle
adb reboot
jeden Tag etwas zu tun, auch wenn es nicht vollständig heruntergefahren werden kann?Andere Stack Exchange-Benutzer haben diese Frage bereits in anderen Posts beantwortet.
t0mm13b schreibt Folgendes , während die Animation zum Herunterfahren Ihres Netzbetreibers angezeigt wird :
An anderer Stelle bietet Yury eine weitere Erklärung, was Android während eines ordnungsgemäßen Herunterfahrens tut:
adb reboot
ist schneller, weil einige oder alle der oben genannten übersprungen werden.quelle