Ответ 1
Запустите это на своем устройстве
grep ^service /init*rc
Что делают adb shell start
и adb shell stop
?
Я думаю, что они называют /system/bin/start
и /system/bin/stop
. Но эти два исполняемых файла не дают никакого представления о том, что они делают. При тестировании на реальном устройстве я обнаружил, что процесс zygote запущен и остановлен. Таким образом, эти две команды, похоже, управляют временем выполнения Android (что соответствует желтым и синим частям на рисунке ниже).
Но какие точные процессы/службы запускаются/останавливаются с помощью этих двух команд?
Запустите это на своем устройстве
grep ^service /init*rc
В принципе, все ваши службы Android перезагружены; те, которые созданы и зарегистрированы в SystemServer.java
. Это называется в "Контексте зиготы". Так что да, Zygote остановлен.
Все ваши услуги, зарегистрированные в ServiceManager
на Android, будут удалены в пределах ServiceManager
. Чтобы перезапустить их, сделайте adb shell start
.
Также обратите внимание, что SystemServer
запускается Zygote, поэтому init.rc
сообщает, что если Zygote остановлен, то даже SystemServer
необходимо остановить. Даже SurfaceFlinger
умирает, так как он начинался с SystemServer
, но изначально.
Мне было интересно, что "останавливается" на Android. Узнал от кого-то, что "останавливает" останавливает AP, оказываемый SurfaceFlinger.
Попробуйте выполнить команду, как показано ниже. Выполните команду, подождите несколько секунд, а затем выполните "stop" на Android. Команда сохраняет печать увеличенного количества и создает .txt файлы. Поэтому, возможно, он останавливает только часть Android, пока часть Linux остается активной. Просто FYI.
busybox sh -c 'i=0;while [ $i -ne 100 ]; do echo $i >> count.txt; sleep 1; i=$(($i + 1)); echo $i; touch "$i.txt"; done;'