我想知道媒体播放器服务(设备启动时向 media.player 注册)是否正在使用 adb shell 运行。是否可以?
我尝试运行 ps 命令但没有成功。
如前所述,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
在你的外壳里面。
试试命令行
adb shell service list
我也得到了服务名称及其包名称的列表。
要简单地检查特定服务是否正在运行,请使用:
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
's 的角度显示正在发生的事情。这包括有关意图、创建时间、上次活动时间、绑定等的信息。如果要存储输出以供以后查看/搜索,可以重定向输出。它通常相当长。
要了解应用程序进程是否正在运行(后台或前台):
adb shell pidof <package.name>
如果进程没有运行,它将返回空字符串,否则它的 pid。
对于 Android 10,列出所有当前正在运行的服务:
adb shell dumpsys activity services | grep "ServiceRecord" | awk '{print $4}' | sed 's/.$//' | sort