33

问题

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

描述

我认为他们调用/system/bin/startand /system/bin/stop。但是这两个可执行文件没有提供任何关于它们做什么的线索。在真机上测试时,我发现zygote进程启动和停止。所以这两个命令似乎控制了Android运行时(对应下图中的黄色和蓝色部分)。

安卓架构

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

4

3 回答 3

16

基本上,您的所有 Android 服务都会重新启动;那些在SystemServer.java. 这在“Zygote 的上下文”中被调用。所以是的,Zygote 停止了。

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

还要注意SystemServer是由 Zygote 启动的,所以init.rc告诉如果 Zygote 停止了,那么 evenSystemServer必须停止。甚至SurfaceFlinger死了,因为它是从SystemServer本地开始的。

于 2013-06-24T14:34:55.077 回答
2

在您的设备上运行它

grep ^service /init*rc
于 2012-11-05T09:52:33.123 回答
2

我也一直想知道“停止”在 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;'
于 2014-07-22T03:35:30.747 回答