55

我想知道媒体播放器服务(设备启动时向 media.player 注册)是否正在使用 adb shell 运行。是否可以?

我尝试运行 ps 命令但没有成功。

4

5 回答 5

88

如前所述,adb shell service list将仅列出系统服务。

正如Android Emulator: How can I get a list of services that are running 中解释的那样,您可以使用以下方法查找应用程序创建的服务

// List all services
adb shell dumpsys activity services

// List all services containing "myservice" in its name
adb shell dumpsys activity services myservice

如果它返回某些内容,则表示该服务已安装。要了解服务当前是启动还是停止,请分别查找app=ProcessRecord(...)app=null

你也可以用一个简单的 Linux 风格来做

ps | grep myservice

在你的外壳里面。

于 2016-12-20T06:23:44.983 回答
74

试试命令行

adb shell service list

我也得到了服务名称及其包名称的列表。

于 2012-06-05T13:22:32.743 回答
28

要简单地检查特定服务是否正在运行,请使用:

adb shell service check <service>

例如,如果它正在运行,则adb shell service check media.player给出,否则。Service media.player: foundService media.player: not found

如果您需要更多详细信息,请尝试dumpsys <service>. 例如,adb shell dumpsys media.player返回有关media.player的客户端、打开的文件等的信息。

最后,如果您确实需要认真的调试细节,请尝试adb shell dumpsys activity servicesActivityManager's 的角度显示正在发生的事情。这包括有关意图、创建时间、上次活动时间、绑定等的信息。如果要存储输出以供以后查看/搜索,可以重定向输出。它通常相当长。

于 2014-06-13T15:29:31.893 回答
1

要了解应用程序进程是否正在运行(后台或前台):

adb shell pidof <package.name>

如果进程没有运行,它将返回空字符串,否则它的 pid。

于 2018-12-02T18:38:08.633 回答
0

对于 Android 10,列出所有当前正在运行的服务:

adb shell dumpsys activity services | grep "ServiceRecord" | awk '{print $4}' | sed 's/.$//' | sort
于 2022-02-24T17:32:18.727 回答