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

时间:2012-06-05 11:38:36

标签: android adb

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

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

4 个答案:

答案 0 :(得分:56)

尝试使用命令行

adb shell service list

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

答案 1 :(得分:48)

如上所述,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

在你的shell里面。

答案 2 :(得分:24)

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

adb shell service check <service>

例如,如果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,它会显示{{1}}的观点。这包括有关意图,创建时间,上次活动时间,绑定等的信息等。如果要存储输出以供以后查看/搜索,可以重定向输出。它通常相当冗长。

答案 3 :(得分:0)

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

adb shell pidof <package.name>

如果进程未运行,它将返回空字符串,否则返回其pid。