我想知道媒体播放器服务(在设备启动时向media.player注册)是否正在运行或不使用adb shell。有可能吗?
我尝试运行ps命令但没有成功。
答案 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。