adb shell start
和adb shell stop
实际上做了什么?
我认为他们会致电/system/bin/start
和/system/bin/stop
。但是这两个可执行文件并没有给出任何关于它们的作用的线索。在真实设备上测试时,我发现合子过程已启动并停止。所以这两个命令似乎控制着Android运行时(对应于下图中的黄色和蓝色部分)。
但使用这两个命令启动/停止了哪些确切的进程/服务?
答案 0 :(得分:11)
基本上,所有Android服务都重新启动;那些在SystemServer.java
中创建和注册的人。这在“受精卵的背景”中被称为。所以是的,Zygote已经停止了。
在Android中ServiceManager
注册的所有服务都将在ServiceManager
内删除。要重新启动它们,请执行adb shell start
。
另请注意,SystemServer
由Zygote启动,因此init.rc
表示如果Zygote已停止,则必须停止SystemServer
。即使SurfaceFlinger
已经死亡,因为它是从SystemServer
开始的,但本身就是。
答案 1 :(得分:1)
在您的设备上运行
grep ^service /init*rc
答案 2 :(得分:1)
我一直想知道"停止"也适用于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;'