Tengo un Samsung Galaxy S Relay 4G con Android 4.1.2. Además, tengo adb instalado en una PC.
Cuando mantengo presionado el botón de Encendido y luego presiono "Reiniciar", mi teléfono tarda unos diez segundos en apagarse. Luego se reinicia solo.
Cuando entro adb reboot
, el teléfono se apaga mucho más rápido: el apagado tarda solo un segundo más o menos. Luego se reinicia.
Mis preguntas:
¿Por qué es
adb reboot
mucho más rápido?¿Se trata simplemente de omitir la animación de apagado del operador de la red móvil o también omite algunos procedimientos más importantes?
¿Puedo usar
adb reboot
cada vez que quiero reiniciar el teléfono, o hay alguna desventaja en hacerlo?(Opcional) ¿Cómo lo sabes?
Más información (puede omitir esto)
Investigué un poco antes de publicar esta pregunta. Pero todavía no estoy iluminado. Te voy a enseñar lo que me descubro.
Tetsuyuki Kobayashi de Kyoto Microcomputer Co. explica en la diapositiva 8 de esta presentación de diapositivas en PDF que adb consta de tres partes: un cliente, un servidor y un demonio. El cliente y el servidor se ejecutan en una PC. El demonio se ejecuta en un teléfono. En la diapositiva 11, explica que las tres partes se crean a partir de un directorio fuente. (Es este directorio ).
Intenté buscar en ese directorio fuente la palabrareboot
y leer partes de services.cpp , pero aún no he podido averiguar qué adb reboot
hace realmente, qué bytes envía por cable o qué código ejecuta el teléfono cuando recibe esos bytes. Tampoco he descubierto la respuesta a ninguna de mis preguntas.
Relacionado : "¿Cuál es la mejor manera de reiniciar Android a través de la línea de comandos (de forma remota)?"
setprop sys.powerctl reboot
que haría. Un apagado inmundo seguido de las instrucciones para reiniciar.Respuestas:
Según el
platform/system/core
repositorio que vinculó anteriormente, creo que la clave está enlibcutils/android_reboot.c
. Y hay definiciones importantesinclude/cutils/android_reboot.h
; a saber:Por lo general, en el modo de reinicio normal (usando el botón del dispositivo, etc.), el proceso es más largo porque (supongo) desmonta la partición, elimina todas las aplicaciones, cierra todos los nodos fopen, como en el proceso de apagado. Se
adb reboot
puede comparar con el comando de reinicio de Linux (de donde viene): simplemente vacía el disco e ingresa al reinicio sin eliminar primero los procesos o desmontar los sistemas de archivos. También veo un comando de remontaje rápido emitido para poner el disco (en nuestro caso, la parte de almacenamiento del sistema) en modo ro antes de reiniciar.También creo que el comando emitido es el
kernel_restart()
que está incrustado en el núcleo. Ver por ejemplo http://www.phonesdevelopers.com/1730094/ . También verifique lasmachine_restart
llamadas.fuente
adb reboot
todos los días a pesar de que no hará un procedimiento de apagado completo?Otros usuarios de Stack Exchange ya han respondido esta pregunta en publicaciones en otros lugares.
t0mm13b escribe eso, mientras muestra la animación de apagado de su operador:
En otro lugar, Yury ofrece otra explicación de lo que hace Android durante un apagado elegante:
adb reboot
es más rápido porque omite algunas o todas las anteriores.fuente