‘adb shell启动/停止’做什么?

adb shell startadb shell stop实际上做了什么?

描述

我认为他们调用/system/bin/start/system/bin/stop 。 但是这两个可执行文件并没有给出任何关于它们做什么的线索。 在真实设备上测试时,我发现合子过程已启动并停止。 所以这两个命令似乎控制着Android运行时(对应于下图中的黄色和蓝色部分)。

Android架构

但是使用这两个命令启动/停止了哪些确切的进程/服务

在您的设备上运行此function

 grep ^service /init*rc 

基本上,所有Android服务都重新启动; 在SystemServer.java中创建和注册的那些。 这在“受精卵的背景”中被称为。 是的,Zygote已经停止了。

在Android中注册的所有服务都将在ServiceManager删除。 要重新启动它们,请执行adb shell start

另请注意, SystemServer由Zygote启动,因此init.rc告诉如果Zygote停止,则必须停止SystemServer 。 甚至SurfaceFlinger也会死掉,因为它是从SystemServer开始的,但本身就是这样。

我一直想知道Android上的“停止”是什么。 从某个“停止”的人那里了解到停止由SurfaceFlinger渲染的AP。

尝试使用如下命令。 执行命令,等待几秒钟,然后在Android上执行“停止”。 该命令保持打印数量增加和创建.txt文件。 所以也许它只会在Linux部分保持活动状态时停止Android部分。 仅供参考。

 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;'