Je possède un Samsung Galaxy S Relay 4G fonctionnant sous Android 4.1.2. De plus, j'ai installé adb sur un PC.
Lorsque j'appuie longuement sur le bouton d'alimentation, puis sur "Redémarrer", mon téléphone prend environ dix secondes pour s'éteindre. Ensuite, il redémarre.
Lorsque j'entre à la adb reboot
place, le téléphone s'éteint beaucoup plus rapidement: l'arrêt ne prend qu'une seconde environ. Ensuite, il redémarre.
Mes questions:
Pourquoi est-ce
adb reboot
tellement plus rapide?Ignore-t-elle simplement l'animation d'arrêt de l'opérateur de réseau mobile ou ignore-t-elle également des procédures plus importantes?
Puis-je utiliser
adb reboot
chaque fois que je veux redémarrer le téléphone, ou y a-t-il un inconvénient à le faire?(Facultatif) Comment le savez-vous?
Plus d'informations (vous pouvez ignorer cela)
J'ai fait quelques recherches avant de poster cette question. Mais je ne suis toujours pas éclairé. Permettez - moi de vous montrer ce que je ne découvre.
Tetsuyuki Kobayashi de Kyoto Microcomputer Co. explique dans la diapositive 8 de ce diaporama PDF que adb se compose de trois parties: un client, un serveur et un démon. Le client et le serveur s'exécutent sur un PC. Le démon s'exécute sur un téléphone. Dans la diapositive 11, il explique que les trois parties sont construites à partir d'un répertoire source. (C'est ce répertoire .)
J'ai essayé de rechercher dans le répertoire source le motreboot
et de lire des parties de services.cpp , mais je n'ai toujours pas été en mesure de comprendre ce qui adb reboot
se passe réellement, ou quels octets il envoie sur le fil, ou quel code le téléphone exécute quand il reçoit ces octets. Je n'ai également trouvé la réponse à aucune de mes questions.
Connexes : "Quelle est la meilleure façon de redémarrer Android via la ligne de commande (à distance)?"
setprop sys.powerctl reboot
qui ferait. Un arrêt impur suivi de l'instruction de redémarrer.Réponses:
Sur la base du
platform/system/core
référentiel que vous avez lié ci-dessus, je pense que la clé est làlibcutils/android_reboot.c
. Et des définitions importantes sontinclude/cutils/android_reboot.h
; à savoir:Habituellement, en mode de redémarrage normal (en utilisant le bouton de l'appareil, etc.), le processus est plus long car (je suppose) il démonte la partition, tue toutes les applications, ferme tous les nœuds fopen, comme dans le processus d'arrêt. La commande
adb reboot
peut être comparée à la commande de redémarrage Linux (d'où elle vient): elle vide simplement le disque et entre dans le redémarrage sans d'abord tuer les processus ou démonter les systèmes de fichiers. Je vois également une commande de remontage rapide émise pour mettre le disque (dans notre cas, la partie de stockage du périphérique du système) en mode ro avant le redémarrage.Je crois également que la commande émise
kernel_restart()
est intégrée au noyau. Voir par exemple http://www.phonesdevelopers.com/1730094/ . Vérifiez également lesmachine_restart
appels.la source
adb reboot
tous les jours, même s'il n'effectue pas une procédure d'arrêt complet?D'autres utilisateurs de Stack Exchange ont déjà répondu à cette question dans des articles ailleurs.
t0mm13b écrit que, lors de l'affichage de l'animation d'arrêt de votre opérateur:
Ailleurs, Yury offre une autre explication de ce que fait Android lors d'un arrêt gracieux:
adb reboot
est plus rapide car il ignore tout ou partie de ce qui précède.la source