如何在android中使用adb shell了解服务是否正在运行

And*_*Dev 44 android adb

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

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

Dr.*_*mon 59

尝试命令行

adb shell service list

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

  • 它似乎只显示系统服务,而不是应用程序的服务,对吧? (37认同)

use*_*648 54

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

Android Emulator中所述:如何获取正在运行的服务列表,您可以使用查找应用程序创建的服务

// List all services
adb shell dumpsys activity services

// List all services containing "myservice" in its name
adb shell dumpsys activity services myservice
Run Code Online (Sandbox Code Playgroud)

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

您也可以使用简单的Linux风格

ps | grep myservice
Run Code Online (Sandbox Code Playgroud)

在你的shell里面.


Pau*_*zzi 24

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

adb shell service check <service>
Run Code Online (Sandbox Code Playgroud)

例如,adb shell service check media.player赋予Service media.player: found如果它的运行和Service media.player: not found其他.

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

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

  • 但是知道应用程序服务的确切包名可能很麻烦:(可以与| grep -i"myservice"一起使用 (2认同)

Jef*_*yet 5

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

adb shell dumpsys activity services | grep "ServiceRecord" | awk '{print $4}' | sed 's/.$//' | sort
Run Code Online (Sandbox Code Playgroud)