android - 在 Android 中从 shell 杀死进程

标签 android service adb

我尝试找到一些方法来从 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/

相关文章:

android - 搜索我在 Google Play 上发布的应用程序

java - 在 OnPostExecute() 中使用 StartActivity

Angular 5服务变量值更新

android - 使用 adb shell am start 命令传递测试参数

java - 如何按位置从数据库中删除行

android - 从服务接收 Activity 数据

android - 从服务传递信息到前台 Activity

javascript - 通过 JS 或任何小部件服务将文本发送到电子邮件

android - 是否可以使用 adb 命令通过查找 ID 单击 View ?

android - 如何通过adb在android上启动守护进程