dumpsys activity用法汇总


2020年3月14日11:21:04


一、 概述

1.1 dumpsys 命令用法

可通过 dumpsys 命令查询系统服务的运行状态 (对象的成员变量属性值),命令格式:dumpsys 服务名, 例如:

dumpsys activity 
dumpsys window 
dumpsys cpuinfo 
dumpsys meminfo

可查询的服务有很多,可通过下面任一命令查看当前系统所支持的 dump 服务:

adb shell dumpsys -l
adb shell service list
1.2 系统服务

表一:

服务名类名功能
activityActivityManagerServiceAMS 相关信息
packagePackageManagerServicePMS 相关信息
windowWindowManagerServiceWMS 相关信息
inputInputManagerServiceIMS 相关信息
powerPowerManagerServicePMS 相关信息
batterystatsBatterystatsService电池统计信息
batteryBatteryService电池信息
alarmAlarmManagerService闹钟信息
dropboxDropboxManagerService调试相关
procstatsProcessStatsService进程统计
cpuinfoCpuBinderCPU
meminfoMemBinder内存
gfxinfoGraphicsBinder图像
dbinfoDbBinder数据库

表二:

服务名功能
SurfaceFlinger图像相关
appopsapp 使用情况
permission权限
processinfo进程服务
batteryproperties电池相关
audio查看声音信息
netstats查看网络统计信息
diskstats查看空间 free 状态
jobscheduler查看任务计划
wifiwifi 信息
diskstats磁盘情况
usagestats用户使用情况
devicestoragemonitor设备信息

二、Activity 场景

dumpsys activity,用于查询 AMS 服务相关信息,可跟不同的参数,更多信息见文章 AMS 之 dumpsys 篇

下面以新浪微博 App 作为实例,由于输出结果较多,每个场景截图只挑选部分重要的信息。

场景 1:查询某个 App 所有的 Service 状态

dumpsys activity s com.sina.weibo

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AdeTV8no-1584157696901)(http://gityuan.com/images/tools/dumpsys_service.png)]

解读:

  • Service 类名为com.morgoo.droidplugin.PluginManagerService
  • 运行在进程 pid=7220,进程名为com.sina.weibo,uid=10094
  • 通过 bindService 连接该服务的进程 pid=7306,进程名为com.sina.weibo:PluginP03

当然还有 packageName,baseDir(apk 路径),dataDir(apk 数据路径),createTime 等各种信息。另外,新浪微博采用的是 360 开源的 Android 插件机制 (com.morgoo.droidplugin),主要用于 hotfix 等功能。

场景 2:查询某个 App 所有的广播状态

dumpsys activity b com.sina.weibo

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Seq1cipx-1584157696904)(http://gityuan.com/images/tools/dumpsys_broadcast.png)]

解读:

  • android.intent.action.SCREEN_ON 代表手机亮屏广播;
  • 接收该广播的 receiver 有很多个,其中一个所在进程为 pid=7220,进程名为com.sina.weibo

场景 3:查询某个 App 所有的 Activity 状态

输出结果较多,尤其是View Hierarchy,下面截取部分:

dumpsys activity a com.sina.weibo

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hsK9zj1b-1584157696904)(http://gityuan.com/images/tools/dumpsys_activity_task.png)]

解读:

  • 格式:TaskRecord{Hashcode #TaskId Affinity UserId=0 Activity 个数 = 1};所以上图信息解析后就是 TaskId=1802,Affinity=com.sina.weibo,当前 Task 中 Activity 个数为 1。
  • effectiveUid 为当前 task 所属 Uid,mCallingUid 为调用者 Uid=u0a94,mCallingPackage 为调用者包名,这里是com.sina.weibo
  • realActivity:task 中的已启动的 Activity 组件名com.sina.weibo/.SplashActivity

场景 4:查询某个 App 的进程状态

dumpsys activity p com.sina.weibo

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vo5dZUFt-1584157696905)(http://gityuan.com/images/tools/dumpsys_processes.png)]

  • 格式:ProcessRecord{Hashcode pid: 进程名 / uid},进程 pid=7306,进程名为com.sina.weibo:PluginP03,uid=10094.
  • 该进程中还有 Services,Connections, Providers, Receivers,可以看出该进程是没有 Activity 的进程。

其他

还有很多场景,会用到不同的参数,这里就不再一一列举,建议大家多去尝试,慢慢地就更加熟练,再比如:

dumpsys activity top 
dumpsys activity oom

基本使用命令:dumpsys activity -h

Activity manager dump options:
  [-a] [-c] [-p package] [-h] [cmd] ... //这个是后面可以跟的参数
  cmd may be one of: //这个代表可以跟的命令
    a[ctivities]: activity stack state //activity的栈信息
    r[recents]: recent activities state//最新的acivity的信息
    b[roadcasts] [PACKAGE_NAME] [history [-s]]: broadcast state//broadcastsde 相关信息
    i[ntents] [PACKAGE_NAME]: pending intent state//intent的信息
    p[rocesses] [PACKAGE_NAME]: process state//进程相关的信息
    o[om]: out of memory management//内存溢出
    prov[iders] [COMP_SPEC ...]: content provider state//provider信息
    provider [COMP_SPEC]: provider client-side state
    s[ervices] [COMP_SPEC ...]: service state
    as[sociations]: tracked app associations
    service [COMP_SPEC]: service client-side state
    package [PACKAGE_NAME]: all state related to given package
    all: dump all activities //输出所有的activity信息
    top: dump the top activity//输出当前栈顶的activity信息
    write: write all pending state to storage
    track-associations: enable association tracking
    untrack-associations: disable and clear association tracking
  cmd may also be a COMP_SPEC to dump activities.
  COMP_SPEC may be a component name (com.foo/.myApp),
    a partial substring in a component name, a
    hex object identifier.
  -a: include all available server state.
  -c: include client state.
  -p: limit output to given package.

常见的命令使用介绍

1.dumpsys activity top

拿到一个新的 app,我们经常定位当前的焦点 activoty 的名字。
这个命令就可以显示,而且还可以显示包含的 fragment‘的信息、

2.dumpsys activity | grep run

过滤目前的所有的 activity 栈信息。

3.dumpsys activity -p 包名

过滤一个包的信息。



  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值