Je cherche le meilleur moyen / le plus convivial de redémarrer mon appareil Android 4.1.1 enraciné. J'ai trouvé ces solutions jusqu'à présent:
su -c "reboot"
- Cause des problèmes avec le wifi après le redémarrage de mon appareil ... J'ai lu que cela peut provoquer un système de fichiers currupt dans certains cas ... Ne fonctionne pas via ssh pour moi.toolbox reboot
- Même soucis ici, mais fonctionne via ssh.reboot -d 8 -f
- provoque des problèmes après le redémarrage, par exemple, certaines applications ne démarrent pasbusybox killall system_server
- "Hot Reboot" (pas vraiment un redémarrage du système)start|stop
- Démarre / arrête Android Runtime (pas vraiment un redémarrage du système)
Que fait l'appareil exactement lorsque j'appuie sur le bouton d'alimentation (matériel)? Je suppose que c'est la manière la plus amicale.
su -c "reboot"
exécute lareboot
commande, qui est définie dansreboot.c
.reboot.c
n'a pas beaucoup changé au fil des ans. Il a toujours appelé sync () puis redémarré l'appareil. De plus, grâce à ce commit , les versions modernes dereboot.c
démontent également tous les systèmes de fichiers. Android 4.1.1 inclut le commit que j'ai mentionné, et donc je ne vois pas commentsu -c "reboot"
sur Android 4.1.1 pourrait jamais endommager le système de fichiers.su -c 'am start -a android.intent.action.REBOOT'
) fonctionne pour moi sur Android 4.1.2, et me semble être la meilleure des réponses existantes. Si cela fonctionne pour vous sur Android 4.1.1, ou si vous êtes trop occupé pour l'essayer, veuillez cliquer sur la coche verte afin de la faire flotter en haut de la section des réponses.Réponses:
Simple, vraiment:
En d'autres termes, les applications et les services ont la possibilité de faire leur nettoyage systématiquement.
Les commandes que vous avez essayées sont plus dures. Ils contournent en fait les mécanismes de sécurité pour un arrêt gracieux.
Android n'est pas Linux en soi, au sens d'une version de bureau ordinaire de Linux où ces commandes pourraient être émises pour arrêter l'environnement Linux.
Il pourrait être possible de créer un script wrapper comme celui-ci:
Vous pouvez l'enregistrer sous
safe_shutdown.sh
, avec les autorisations de 0755. Votre kilométrage peut varier en fonction des combinés et des ROM - donc aucune garantie là-bas.la source
adb reboot
? Je ne sais pas si c'est sûr!?! Peut-être un script wrapper autour pour envoyer une diffusionACTION_SHUTDOWN
puis appeleradb reboot
?ACTION_SHUTDOWN
fasse ce que vous voulez non plus: "Les applications n'auront normalement pas besoin de gérer cela, car l'activité de premier plan sera également suspendue." Il semble que la plupart des applications ne le gèrent pas. La pause de l'activité est-elle suffisante?Vous pouvez voir une boîte de dialogue avec une option pour éteindre l'appareil (Android ne propose pas de redémarrage). Il semble que ShutdownActivity soit appelé lorsque vous appuyez longuement sur le bouton d'alimentation.
Quoi qu'il en soit, c'est ce que vous pouvez essayer, à distance ou localement, mais uniquement avec un accès root:
Il fera un arrêt gracieux suivi du redémarrage. Je cherchais une intention quand je l'ai remarqué ici .
La méthode est testée sur Android 4.2.1, 5.0.2 et 6.0.1 et devrait fonctionner pour Android 4.1.1 et
Mise à jour
Testé sur stock Android 5.0 et 6.0.1:
Selon le code source ici , les builds KitKat devraient également prendre en charge la commande.
la source
Cela tuera le
zygote
processus racine et provoquera une actualisation du système Android.Cela ne redémarre pas le matériel de votre téléphone, seulement les processus Android.
Par défaut (sous Linux), les commandes
kill
/killall
donnent aux processus un moyen gracieux de s'arrêter, bien que cela dépende de l' implémentation de zygote si cela à son tour arrête gracieusement vos applications Android en cours d'exécution.Remarque: vous devez l'exécuter en tant que root, que vous utilisiez, vous
su -c
connectiez via SSH ou ADB, ou une autre méthode.Autres noms pour cette action:
la source
am restart
. Cela nécessite cependant un accès root.killall zygote
aux processus une manière élégante de s'arrêter? Question interessante. Il faudrait que quelqu'un regarde lezygote
code source pour le savoir.