Я владею Samsung Galaxy S Relay 4G под управлением Android 4.1.2. Также у меня есть adb, установленный на ПК.
Когда я долго нажимаю кнопку питания, а затем нажимаю «Перезагрузка», мой телефон выключается примерно за десять секунд. Затем он сам перезагружается.
Когда я ввожу adb reboot
вместо этого, телефон выключается намного быстрее: выключение занимает всего секунду или около того. Затем он перезагружается.
Мои вопросы:
Почему
adb reboot
так быстрее?Это просто пропускает анимацию выключения оператора мобильной сети, или это пропускает некоторые более важные процедуры?
Могу ли я использовать
adb reboot
каждый раз, когда я хочу перезагрузить телефон, или есть какой-то недостаток для этого?(Необязательно) Откуда вы знаете?
Больше информации (вы можете пропустить это)
Я провел некоторое исследование, прежде чем опубликовать этот вопрос. Но я все еще непросветленный. Позвольте мне показать вам , что я сделал обнаружить.
Тецуюки Кобаяши из Kyoto Microcomputer Co. объясняет на слайде 8 этого слайд-шоу в формате PDF, что adb состоит из трех частей: клиента, сервера и демона. Клиент и сервер работают на ПК. Демон работает по телефону. На слайде 11 он объясняет, что все три части построены из одного исходного каталога. (Это этот каталог .)
Я попытался найти в этом исходном каталоге словоreboot
и прочитать части services.cpp , но я до сих пор не смог выяснить, что на adb reboot
самом деле делает, или какие байты он передает по проводам, или какой код запускает телефон, когда он получает эти байты. Я также не выяснил ответ на любой из моих вопросов.
По теме : «Какой лучший способ перезагрузить Android через командную строку (удаленно)?»
setprop sys.powerctl reboot
будет делать. Нечистое завершение работы с последующей инструкцией по перезагрузке.Ответы:
Основываясь на
platform/system/core
репозитории, который вы связали выше, я думаю, что ключ вlibcutils/android_reboot.c
. И важные определения вinclude/cutils/android_reboot.h
; а именно:Обычно в обычном режиме перезагрузки (с помощью кнопки устройства и т. Д.) Этот процесс дольше, потому что (я предполагаю) это размонтирование раздела, уничтожение всех приложений, закрытие всех узлов fopen, как в процессе выключения. Их
adb reboot
можно сравнить с командой перезагрузки Linux (откуда она взялась): она просто очищает диск и вводит перезагрузку без предварительного уничтожения процессов или размонтирования файловых систем. Я также вижу команду быстрого перемонтирования, которая переводит диск (в нашем случае это часть системы хранения устройства) в режим ro перед перезагрузкой.Я также считаю, что выданная команда
kernel_restart()
встроена в ядро. См. Например, http://www.phonesdevelopers.com/1730094/ . Также проверьтеmachine_restart
звонки.источник
adb reboot
каждый день, несмотря на то, что процедура полного выключения не выполняется?Другие пользователи Stack Exchange уже ответили на этот вопрос в других публикациях.
t0mm13b пишет, что при отображении анимации выключения вашего оператора:
В другом месте Юрий предлагает другое объяснение того, что делает Android во время изящного выключения:
adb reboot
быстрее, потому что пропускает некоторые или все вышеперечисленное.источник