dump(作为计算机的术语翻译为转储),sys(system)。我们可以通过 adb 调用该命令以获取系统服务信息。
👆 为了方便记忆,可用这样理解 dump
作为 动词,可以从 dump 的目的和 dump 的对象这两个方面去理解 dump 本身。
1、为什么要 dump(dump 的目的)?
因为程序在计算机中运行时,在内存、CPU、I/O等设备上的数据都是动态的(或者说是易失的),也就是说数据使用完或者发生异常就会丢掉。如果我想得到某些时刻的数据(有可能是调试程序 Bug 或者收集某些信息),就要把他转储(dump)为静态(如文件)的形式。否则,这些数据你永远都拿不到。
2、dump 转储的是什么内容(dump 的对象)?
其实上边已经提到了,就是将动态(易失)的数据,保存为静态的数据(持久数据)。像程序这种本来就保存在存储介质(如硬盘)中的数据,也就没有必要dump。
现在,dump作为 名词 也很好理解了,一般就是指 dump(动词) 的结果文件。
以上来自 知乎 Freeman 的回答
dumpsys 常用语法
adb shell dumpsys [-t timeout] [--help | -l | --skip services | service [arguments] | -c | -h]
下表列出了使用 dumpsys
时的可用选项。
选项 | 说明 |
---|---|
-t timeout | 指定超时期限(秒)。如果未指定,默认值为 10 秒。 |
–help | 输出 dumpsys 工具的帮助文本。 |
-l | 输出可与 dumpsys 配合使用的系统服务的完整列表。 |
–skip services | 指定您不希望包含在输出中的服务。 |
service [arguments] | 指定您希望输出的服务。某些服务可能允许您传递可选参数。您可以通过将 -h 选项与服务名称一起传递来了解这些可选参数,如下所示:adb shell dumpsys procstats -h |
-c | 指定某些服务时,附加此选项能以计算机可读的格式输出数据。 |
-h | 对于某些服务,附加此选项可查看该服务的帮助文本和其他选项。 |
dumpsys 原理
dumpsys 命令源码来自 frameworks/native/cmds/dumpsys/dumpsys.cpp。
dumpsys 主要做了以下几件事:
- 获取 ServiceManager 对象
sm_
- 使用
sm_
的listService()
获取系统所有向 ServiceManager 注册过的服务 - 使用
sm_
的checkService()
获取指定服务 - 调用 service 远程服务中的
dump()
方法输出相应的信息
简单来讲,dumpsys 通过用户输入命令中的 service 名称,使用 checkService()
获取指定 servic
e ,并调用其远程服务中的 dump()
方法来输出相应的信息。
👆 划重点
例如 adb shell dumpsys activity activities
👆 service 名称为
activity
,输出 ActivityManagerService 相关的信息,参数activities
表示显示 activity 状态
dumpsys 的使用技巧
常用的 service
常用的 service 名称有:
dumpsys activity //查询AMS服务相关信息
dumpsys window //查询WMS服务相关信息
dumpsys cpuinfo //查询CPU情况
dumpsys meminfo //查询内存情况
adb shell dumpsys -l
命令能够输出可与 dumpsys
配合使用的系统服务的完整列表。
详情如下:
服务名 | 类名 | 功能 |
---|---|---|
activity | ActivityManagerService | AMS相关信息 |
package | PackageManagerService | PMS相关信息 |
window | WindowManagerService | WMS相关信息 |
input | InputManagerService | IMS相关信息 |
power | PowerManagerService | PMS相关信息 |
batterystats | BatterystatsService | 电池统计信息 |
battery | BatteryService | 电池信息 |
alarm | AlarmManagerService | 闹钟信息 |
dropbox | DropboxManagerService | 调试相关 |
procstats | ProcessStatsService | 进程统计 |
cpuinfo | CpuBinder | CPU |
meminfo | MemBinder | 内存 |
gfxinfo | GraphicsBinder | 图像 |
dbinfo | DbBinder | 数据库 |
服务名 | 功能 |
---|---|
SurfaceFlinger | 图像相关 |
appops | app使用情况 |
permission | 权限 |
processinfo | 进程服务 |
batteryproperties | 电池相关 |
audio | 查看声音信息 |
netstats | 查看网络统计信息 |
diskstats | 查看空间free状态 |
jobscheduler | 查看任务计划 |
wifi | wifi信息 |
diskstats | 磁盘情况 |
usagestats | 用户使用情况 |
devicestoragemonitor | 设备信息 |
… | … |
本文在开源项目:https://github.com/xieyuliang/Note-Android
中已收录,里面包含Android自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中……
最后
小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
资料⬅专栏获取
8983914253)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
资料⬅专栏获取