如何使用ADB检查后台运行的应用程序

后台应用程序和进程对于 Android 设备的正常运行至关重要。一些应用程序在前台运行并且会引起用户的注意,而另一些应用程序则在后台悄悄运行。本教程将探讨所有可用的 ADB 命令,这些命令可让您检查 Android 设备上后台和前台运行的应用程序。

一旦获得正在运行的应用程序和进程的列表、它们的 PID 以及 CPU 和内存使用情况,您就可以识别需要停止的应用程序和进程。

但是,在执行命令之前,必须先并在 Android 上启用 USB 调试。

列出所有后台应用程序和进程

有一个简单但功能强大的 ADB 命令可以列出连接的 Android 设备上的所有后台进程。 (PID表示进程ID)

adb shell ps
or
adb shell ps -A

您还可以使用以下命令列出 Android 设备上所有正在运行的活动。

检查应用程序的 CPU 和内存使用情况

top命令在 Linux 中用于获取正在运行的系统进程的实时视图。 Android基于Linux,也支持该命令。

打开‘平台工具‘ 包含 ADB 和 Fastboot 驱动程序的文件夹。在文件夹的地址栏中输入“powershell”,然后按 Enter 键启动命令窗口及其路径。

将手机的屏幕超时时间延长至 5-10 分钟,并使用 USB 线将其连接到计算机。现在执行以下命令。

adb shell

之后$符号,输入‘顶部‘然后按 Enter 键。

您还可以使用下面提到的命令。

adb shell top

还可以列出 Android 设备上 5 个、10 个或任意数量的最占用 CPU 的进程。

adb shell top -m 10

如果要按内存和 CPU 消耗对运行最多的进程进行排序,请使用以下命令。

按内存使用情况排序:adb shell top -s 6

按CPU使用率排序:adb shell top -s 9

与其他 ADB 命令一样,该命令可以与某些变量一起使用以获得更具体的信息。

  • -h:使用图表而不是文本
  • -k:回退排序FIELDS(默认-S,-%CPU,-ETIME,-PID)
  • -o:显示字段(定义 PID、用户、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、CMDLINE)
  • -s:按字段编号排序(1-X,默认9)
  • -b:批处理模式(无tty)
  • -d:每个周期之间的延迟秒数(默认 3)
  • -m:显示的最大任务数
  • -n: 多次迭代后退出
  • -p:显示这些PID
  • -u:显示这些用户
  • -q:安静(无标题行)
Example: adb shell top -n 1

ADB 还可以帮助您检查应用程序占用了多少内存。

adb shell dumpsys meminfo

使用电池参数dumpsys命令,你可以.

获取 Android 上的热门活动

ADB 还可以列出最重要的前台活动及其 PID,并终止正在运行的进程。

在命令窗口中执行以下命令。

adb shell "dumpsys activity | grep top-activity"

这将为您提供最热门的活动和PID。您可以使用其 PID 来终止该进程。

"kill <PID>"

或者,您可以使用以下 ADB 命令通过 PID 终止进程。

adb shell kill <PID>

要通过包名称查找特定应用程序的 PID,请尝试以下操作。

adb shell pidof <package-name>

您还可以使用以下命令检查当前正在运行的应用程序。

adb shell dumpsys activity | awk -F '[ /}]' '/mCurrentFocus/{print $9}'

获取最近使用的应用程序列表

您可以通过点击导航栏上的应用程序切换器图标轻松查看最近打开的应用程序。或者,您可以使用以下 ADB 命令列出最近的应用程序及其当前活动以及详细信息。

adb shell dumpsys activity recents

以下命令将为您提供更紧凑的输出。

adb shell dumpsys activity top | grep "ACTIVITY"

要获取当前活动的前台应用程序或活动,您可以使用上面的命令,如下所示。

adb shell dumpsys activity top | grep "ACTIVITY" | tail -n 1

检查应用程序是否正在运行并停止它

ADB 还有一个命令来查找正在运行的应用程序或进程并通过 ADB 终止它.

  1. 在计算机上打开命令提示符窗口并使用 USB 电缆连接您的设备。
  2. 执行以下命令进入Shell。
    adb shell
  3. 现在,输入以下命令来检查特定应用程序是否在后台处于活动状态。
    ps -A | grep <package-name>
  4. 如果应用程序在后台处于活动状态,ADB 将显示用户 ID、PID 和内存使用情况。
  5. 您可以使用以下命令终止或停止该应用程序。
    • am kill <package-name>
    • am force-stop <package-name>
  6. 要验证后台应用程序是否已成功终止或停止,请重新运行以下命令。
    ps -A | grep <package-name>
  7. 这次,您应该得到空白输出。
  8. 就是这样。

还有另一个命令可以安全地终止应用程序,就像 Android 操作系统在需要资源时所做的那样。由于该命令使用xargs,它可能无法在 Windows 上运行

adb shell "ps | grep <package-name> | awk '{print $2}'" | xargs adb shell "run-as <package-name> kill"

打开最近使用页面并关闭应用程序

当您在 Android 设备上使用应用程序时,它们会添加到“最近使用”页面,以便您可以在它们之间快速切换。其中一些应用程序可能会继续在后台运行。您可以通过点击 Android 上最近使用的应用程序应用程序切换器导航栏上的按钮并使用全部关闭或者全部清除选项。

或者,您可以通过 ADB 命令直接从计算机模拟相同的操作。

  1. 将 Android 设备连接到计算机,启动命令窗口,然后发出以下命令打开最近的.
    adb shell input keyevent KEYCODE_APP_SWITCH
  2. 当设备上的“最近使用”屏幕打开时,请一一执行以下命令两次。这样做将突出显示焦点中的应用程序,然后全部关闭按钮。
    adb shell input keyevent KEYCODE_DPAD_DOWN
    adb shell input keyevent KEYCODE_DPAD_DOWN
    
  3. 最后,输入以下命令以选择突出显示的项目。
    adb shell input keyevent KEYCODE_ENTER
  4. 这将关闭或清除所有应用程序最近的屏幕。

您会惊讶地发现 Android 手机或平板电脑上的后台活动和进程数量之多。为了避免您不知所措,请尝试以下命令来列出 Android 设备上后台运行的应用程序。

adb shell dumpsys activity activities
adb shell dumpsys activity services

要获取当前活动的列表,请尝试以下操作:

adb shell dumpsys activity activities | grep mActivityComponent | cut -d= -f2 | sort -u -m

我测试了 ADB 命令来检查在带有 One UI 7 的 Samsung Galaxy S24 Ultra 上后台和前台运行的应用程序。尝试它们,看看它们是否可以在您的设备上运行。