关于android:’adb shell start / stop’是做什么的?

What does 'adb shell start/stop' do?

adb shell startadb shell stop实际做什么?

描述

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

Android Architecture

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


基本上,您的所有Android服务都将重新启动; 在SystemServer.java中创建和注册的文件。 这在"合子语境"中称为。 所以是的,合子停止了。

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

还要注意,SystemServer是由Zygote启动的,因此init.rc告诉您,如果Zygote停止了,那么即使SystemServer也必须停止。 甚至SurfaceFlinger都死了,因为它是从SystemServer开始的,但是本机地。


在您的设备上运行

1
grep ^service /init*rc


我一直想知道Android上的"停止"功能是什么。 从某人那里获悉,"停止"将阻止SurfaceFlinger渲染AP。

尝试使用以下命令。 执行命令,等待几秒钟,然后在Android上执行"停止"。 该命令将继续打印增加的数字并创建.txt文件。 因此,也许只有在Linux部分保持活动状态时才停止Android部分。 仅供参考。

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