Ich suche nach der besten / freundlichsten Möglichkeit, mein gerootetes Android 4.1.1-Gerät neu zu starten. Diese Lösungen habe ich bisher gefunden:
su -c "reboot"
- Verursacht Probleme mit dem WLAN nach dem Neustart auf meinem Gerät ... Ich habe gelesen, dass dies in einigen Fällen zu einem fehlerhaften Dateisystem führen kann ... Funktioniert bei mir nicht über ssh.toolbox reboot
- Gleiche Bedenken hier, funktioniert aber über ssh.reboot -d 8 -f
- verursacht Probleme nach dem Neustart, z. B. werden einige Apps nicht gestartetbusybox killall system_server
- "Hot Reboot" (nicht wirklich ein Systemneustart)start|stop
- Startet/stoppt Android Runtime (nicht wirklich ein Systemneustart)Was macht das Gerät genau, wenn ich den (Hardware-) Netzschalter drücke? Ich denke, das ist der freundlichste Weg.
Was macht das Gerät genau, wenn ich den (Hardware-) Netzschalter drücke? Ich denke, das ist der freundlichste Weg.
Sie sehen einen Dialog mit einer Option zum Ausschalten des Geräts (Standard-Android bietet keinen Neustart). Es scheint, dass ShutdownActivity aufgerufen wird, wenn Sie die Power-Taste lange drücken.
Wie auch immer, das ist, was Sie versuchen können, remote oder lokal, aber nur mit Root-Zugriff:
su -c 'am start -a android.intent.action.REBOOT'
Es wird ein ordnungsgemäßes Herunterfahren durchgeführt, gefolgt vom Neustart. Ich suchte nach einer Absicht, als ich sie hier bemerkte .
Die Methode wurde auf Android 4.2.1, 5.0.2 und 6.0.1 getestet und sollte auch für Android 4.1.1 funktionieren
Getestet auf Stock Android 5.0 und 6.0.1:
su -c 'svc power reboot'
Gemäß dem Quellcode hier sollten auch KitKat-Builds den Befehl unterstützen.
Ganz einfach:
Mit anderen Worten, Apps und Dienste erhalten die Möglichkeit, systematisch aufzuräumen.
Die Befehle, die Sie versucht haben, sind härter. Sie umgehen tatsächlich die Sicherheitsmechanismen für ein ordnungsgemäßes Herunterfahren.
Android ist per se kein Linux im Sinne einer gewöhnlichen Desktop-Version von Linux, bei der diese Befehle zum Herunterfahren der Linux-Umgebung ausgegeben werden könnten.
Es könnte möglich sein, ein Wrapper-Skript wie dieses zu erstellen:
#!/system/bin/sh
am broadcast android.intent.action.ACTION_SHUTDOWN
sleep 5
reboot
Sie könnten dies als safe_shutdown.sh
, mit den Berechtigungen 0755 speichern. Ihr Kilometerstand kann je nach Mobilteil und ROM variieren – daher gibt es keine Garantien.
adb reboot
? Ich bin mir nicht sicher, ob das sicher ist!?! Vielleicht ein Wrapper-Skript darum, um eine Sendung zu senden und ACTION_SHUTDOWN
dann anzurufen adb reboot
?ACTION_SHUTDOWN
das tut, was Sie wollen: "Apps müssen dies normalerweise nicht handhaben, da die Vordergrundaktivität ebenfalls angehalten wird." Klingt so, als würden die meisten Apps damit nicht umgehen. Reicht es aus, die Aktivität zu pausieren?ACTION_SHUTDOWN
(es war für ältere Versionen zutreffend, wurde aber in JB leicht geändert).su -c 'am broadcast android.intent.action.ACTION_SHUTDOWN && sleep 5 && toolbox reboot'
(Kann je nach ROM variieren)am broadcast android.intent.action.ACTION_SHUTDOWN
scheint die Absicht gut auf meinem Android 5.1.1 "Lollipop" Emulator zu übertragen. Es gibt zurück: Broadcast completed: result=0
. Seltsamerweise gibt derselbe Befehl auf meinem Samsung Galaxy S Relay mit Android 4.1.2 "Jelly Bean" nie etwas zurück. Stattdessen am
scheint der Befehl für immer weiterzulaufen.killall zygote
Dies beendet den Root- zygote
Prozess und führt zu einer Aktualisierung des Android-Systems.
Dadurch wird nicht die Hardware Ihres Telefons neu gestartet, sondern nur die Android-Prozesse.
Standardmäßig (in Linux) geben die kill
/ killall
-Befehle den Prozessen eine elegante Möglichkeit zum Herunterfahren, obwohl es von der Zygote -Implementierung abhängt, ob dies wiederum Ihre laufenden Android-Apps ordnungsgemäß herunterfährt.
Hinweis: Sie müssen dies als root ausführen, unabhängig davon, ob Sie su -c
, eine Verbindung über SSH oder ADB oder eine andere Methode verwenden.
Andere Namen für diese Aktion:
am restart
. Dies erfordert jedoch Root-Zugriff.killall zygote
Prozessen eine elegante Möglichkeit zum Herunterfahren? Interessante Frage. Jemand müsste sich den zygote
Quellcode ansehen, um es zu wissen.
unvergesslichidUnterstütztMonica
su -c "reboot"
führt denreboot
Befehl aus, der in definiert istreboot.c
.reboot.c
hat sich über die Jahre nicht viel verändert. Es hat immer sync() aufgerufen und dann das Gerät neu gestartet. Dank dieses Commits hängen auch moderne Versionen vonreboot.c
alle Dateisysteme aus. Android 4.1.1 enthält das von mir erwähnte Commit, und daher sehe ich nicht, wiesu -c "reboot"
Android 4.1.1 jemals zu einer Beschädigung des Dateisystems führen könnte.unvergesslichidUnterstütztMonica
su -c 'am start -a android.intent.action.REBOOT'
) funktioniert bei mir unter Android 4.1.2 und scheint mir die beste der vorhandenen Antworten zu sein. Wenn es für Sie unter Android 4.1.1 funktioniert oder wenn Sie zu beschäftigt sind, um es auszuprobieren, klicken Sie bitte auf das grüne Häkchen, damit es an den Anfang des Antwortbereichs schwebt.