我尝试找到一些方法来从 shell 中杀死 Android 中不必要的服务/进程。 问题是,杀死进程后,它会在几秒钟后再次启动!
例如,我试图终止电池警告,但它不断重新启动:
root@w812a_kk:/ # ps | grep batteryw
shell 17986 1 1044 364 c00601dc b6e9f094 S /system/bin/batterywarning
1|root@w812a_kk:/ # ps | grep batteryw
shell 17781 1 1044 364 c00601dc b6ee6094 S /system/bin/batterywarning
root@w812a_kk:/ # busybox killall batterywarning
root@w812a_kk:/ # ps | grep batteryw
1|root@w812a_kk:/ # ps | grep batteryw
shell 17986 1 1044 364 c00601dc b6e9f094 S /system/bin/batterywarning
我确实在以下链接中找到了几种终止服务/进程的方法,但该进程又开始了。
Android ADB stop application command like "force-stop" for non rooted device .
这是只能在 init.rc 中完成的事情吗?
谢谢
最佳答案
此服务可能以 STICKY 方式启动 - 在某个预定义的超时后,操作系统将自动重新启动它。
您可以通过从设备中提取 logcat 并在其中查找您试图终止的服务的名称来检查它:
$ adb logcat -d > logcat.txt
$ grep -C 5 -i batterywarning logcat.txt
如果您看到类似scheduling restart of crashed service in X秒
的内容,那么您就可以确定操作系统正在重新启动该服务。
如果确实如此,我怀疑您是否可以在非 root 设备上完全杀死它(我也不知道如何在 root 设备上实现这一点)。
关于android - 在 Android 中从 shell 杀死进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119844/