Szukam najlepszego / najbardziej przyjaznego sposobu na ponowne uruchomienie mojego zrootowanego urządzenia z Androidem 4.1.1. Dotychczas znalazłem te rozwiązania:
su -c "reboot"
- Powoduje problemy z Wi-Fi po ponownym uruchomieniu na moim urządzeniu ... Przeczytałem, że w niektórych przypadkach może to spowodować awarię systemu plików ...toolbox reboot
- Te same obawy tutaj, ale działa przez ssh.reboot -d 8 -f
- powoduje problemy po ponownym uruchomieniu, np. niektóre aplikacje się nie uruchamiająbusybox killall system_server
- „Hot Reboot” (tak naprawdę nie restart systemu)start|stop
- Uruchamia / zatrzymuje Android Runtime (tak naprawdę nie jest to restart systemu)
Co dokładnie robi urządzenie, kiedy naciskam przycisk (sprzętowy) zasilania? To chyba najbardziej przyjazny sposób.
su -c "reboot"
uruchamiareboot
polecenie zdefiniowane wreboot.c
.reboot.c
przez lata niewiele się zmieniło. Zawsze wywoływał sync (), a następnie restartował urządzenie. Ponadto, dzięki temu zatwierdzeniu , nowoczesne wersjereboot.c
również odmontowują wszystkie systemy plików. Android 4.1.1 zawiera wspomniane wyżej zatwierdzenie, więc nie widzę, jaksu -c "reboot"
w Androidzie 4.1.1 może kiedykolwiek spowodować uszkodzenie systemu plików.su -c 'am start -a android.intent.action.REBOOT'
) działa na mnie w Androidzie 4.1.2 i wydaje mi się, że jest to najlepsza z istniejących odpowiedzi. Jeśli działa dla Ciebie w Androidzie 4.1.1 lub jeśli jesteś zbyt zajęty, aby go wypróbować, kliknij zielony znacznik wyboru, aby przenieść go na górę sekcji odpowiedzi.Odpowiedzi:
Proste, naprawdę:
Innymi słowy, aplikacje i usługi mają możliwość systematycznego czyszczenia.
Polecenia, które wypróbowałeś, są ostrzejsze. W rzeczywistości omijają mechanizmy bezpieczeństwa w celu płynnego wyłączenia.
Android nie jest Linuxem per se, w sensie zwykłej wersji Linuksa na komputery stacjonarne, w której można wydawać te polecenia w celu zamknięcia środowiska Linux.
Możliwe może być utworzenie skryptu opakowania, takiego jak ten:
Możesz zapisać to jako
safe_shutdown.sh
z uprawnieniami 0755. Twój przebieg może się różnić w zależności od słuchawek i pamięci ROM - więc nie ma żadnych gwarancji.źródło
adb reboot
? Nie jestem pewien, czy to bezpieczne!?! Może wokół niego jest skrypt otoki, aby wysłać transmisję,ACTION_SHUTDOWN
a następnie zadzwonićadb reboot
?ACTION_SHUTDOWN
zrobi to, co chcesz: „Aplikacje zwykle nie będą musiały sobie z tym radzić, ponieważ aktywność na pierwszym planie również zostanie wstrzymana”. Wygląda na to, że większość aplikacji nie poradzi sobie z tym. Czy wstrzymanie aktywności jest wystarczające?Zobaczysz okno dialogowe z opcją wyłączenia urządzenia (standardowe urządzenie Android nie oferuje ponownego uruchomienia). Wygląda na to, że funkcja ShutdownActivity jest wywoływana po długim naciśnięciu przycisku zasilania.
Tak czy inaczej, możesz spróbować zdalnie lub lokalnie, ale tylko z dostępem root:
Nastąpi płynne zamknięcie, a następnie ponowne uruchomienie. Szukałem dla intencją, kiedy zauważył go tutaj .
Metoda jest testowana na Android 4.2.1, 5.0.2 i 6.0.1 i powinno działać na Androidzie 4.1.1 , a także
Aktualizacja
Testowane na standardowym Androidzie 5.0 i 6.0.1:
Za kod źródłowy tutaj , KitKat buduje powinien również wspierać komendę.
źródło
Spowoduje to zabicie
zygote
procesu rootowania i spowoduje odświeżenie systemu Android.Nie powoduje to ponownego uruchomienia sprzętu telefonu, a jedynie procesy systemu Android.
Domyślnie (w Linuksie) polecenia
kill
/killall
dają procesom płynny sposób na zamknięcie, chociaż to zależy od implementacji zygote, czy to z kolei z wdziękiem zamyka uruchomione aplikacje na Androida.Uwaga: musisz uruchomić to jako root, bez względu na to, czy używasz
su -c
, łącz się przez SSH lub ADB, lub inną metodą.Inne nazwy tej akcji:
źródło
am restart
. Wymaga to jednak dostępu do roota.killall zygote
daje procesom pełen wdzięku sposób na zamknięcie? Interesujące pytanie. Ktoś musiałby spojrzeć nazygote
kod źródłowy, aby się dowiedzieć.