Eu possuo um Samsung Galaxy S Relay 4G executando o Android 4.1.2. Além disso, tenho adb instalado em um PC.
Quando pressiono o botão Liga / Desliga e toque em "Reiniciar", meu telefone leva cerca de dez segundos para desligar. Então ele se reinicia.
Quando entro adb reboot
, o telefone é desligado muito mais rápido: o desligamento leva apenas um segundo. Então ele é reiniciado.
Minhas perguntas:
Por que é
adb reboot
muito mais rápido?É simplesmente pular a animação de desligamento da operadora de rede móvel ou também pular alguns procedimentos mais importantes?
Posso usar
adb reboot
sempre que quiser reiniciar o telefone ou há alguma desvantagem em fazer isso?(Opcional) Como você sabe?
Mais informações (você pode pular isso)
Eu fiz algumas pesquisas antes de postar esta pergunta. Mas ainda não sou iluminado. Deixe-me mostrar o que eu queria descobrir.
Tetsuyuki Kobayashi, da Kyoto Microcomputer Co., explica no slide 8 desta apresentação de slides em PDF que o adb consiste em três partes: um cliente, um servidor e um daemon. O cliente e o servidor são executados em um PC. O daemon é executado em um telefone. No slide 11, ele explica que as três partes são criadas a partir de um diretório de origem. (É este diretório .)
Tentei pesquisar no diretório de origem a palavrareboot
e ler partes dos services.cpp , mas ainda não consegui descobrir o que adb reboot
realmente faz, ou quais bytes ele envia por fio, ou qual código o telefone executa quando ele é executado. recebe esses bytes. Também não descobri a resposta para nenhuma das minhas perguntas.
Relacionado : "Qual é a melhor maneira de reiniciar o Android via linha de comando (remotamente)?"
setprop sys.powerctl reboot
faria. Um desligamento imundo seguido pela instrução para reiniciar novamente.Respostas:
Com base no
platform/system/core
repositório que você vinculou acima, acho que está a chavelibcutils/android_reboot.c
. E definições importantes estão eminclude/cutils/android_reboot.h
; nomeadamente:Normalmente, no modo de reinicialização normal (usando o botão do dispositivo, etc.), o processo é mais longo porque (presumo) desmontar partições, matar todos os aplicativos, fechar todos os nós abertos, como no processo de desligamento. Ele
adb reboot
pode ser comparado ao comando de reinicialização do Linux (de onde vem): ele apenas libera o disco e entra na reinicialização sem primeiro interromper os processos ou desmontar os sistemas de arquivos. Também vejo um comando de remontagem rápida emitido para colocar o disco (no nosso caso, parte do sistema de armazenamento) no modo ro antes da reinicialização.Eu também acredito que o comando emitido é o
kernel_restart()
que está incorporado no kernel. Veja, por exemplo, http://www.phonesdevelopers.com/1730094/ . Verifique também asmachine_restart
chamadas.fonte
adb reboot
todos os dias, mesmo que não faça um procedimento de desligamento completo?Outros usuários do Stack Exchange já responderam a essa pergunta em postagens em outros lugares.
O t0mm13b escreve que, enquanto exibe a animação de desligamento da sua operadora:
Em outros lugares, Yury oferece outra explicação sobre o que o Android faz durante um desligamento normal:
adb reboot
é mais rápido porque ignora algumas ou todas as opções acima.fonte