android 系统开发(4)---AMS 的dumpsys

2018-03-28  本文已影响0人  做机人

一.概述

在Android 开发过程中,为了查询当前手机运行时状态的变化值,需要通过dumpsys activity命令来完成,该方法最终是调用AMS.dump()方法。

dumpsys命令用法简要介绍过dumpsys命令 的基本用法,以及系统服务列表信息,那么本文重点介绍AMS。 根据dumpsys activity传递不同的参数, 对于AMS.dump便会输出相应的对象信息。 具体可以跟哪些参数.

1.1 命令格式

dumpsys activity  [options]  [WHAT]

其中options为可选项,以-开头, 主要有以下几类:

options含义

-a包括所有可用Server状态

-c包括Client状态,即App端情况

-p PACKAGE限定输出指定包名

1.2 WHAT参数

列举常见的WHAT参数:

序号WHAT解释对应源码

   WHAT                                                  解释                      对应的源码

1  a[ctivities]                                         activity状态           dumpActivitiesLocked()

2   b[roadcasts] [PACKAGE_NAME]   broadcast状态       dumpBroadcastsLocked()

3  s[ervices] [COMP_SPEC …]           service状态           newServiceDumperLocked().dumpLocked

4   prov[iders] [COMP_SPEC …]       content provider状态   dumpProwevidersLocked()

5  p[rocesses]   [PACKAGE_NAME]      进程状态                  dumpProcessesLocked()

6   o[om]                                                    内存管理               dumpOomLocked()

7   i[ntents] [PACKAGE_NAME]    pending intent状态           dumpPendingIntentsLocked()

8   r[ecents]                                                 最近                    activitydumpRecentsLocked()

9      perm[issions]                                URI授权情况               dumpPermissionsLocked()

10     all所有                                           activities信息               dumpActivity()

11       top                                              顶部activity信息            dumpActivity()

12        package                                   package相关信息                dump()

其中PACKAGE_NAME是指可跟包名,COMP_SPEC是指可跟具体组件信息,中括号是指缩写字母;

二. dumpsys activity

前面介绍dumpsys activity根据后面跟着的不同参数则输出相应的内容,当不跟任何参数, dumpsys activity等价于依次输出下面8条命令:

1)dumpsys activity intents

2) dumpsys activity broadcasts //广播

3) dumpsys activity providers  //provider

4) dumpsys activity permissions

5) dumpsys activity services  //服务

6) dumpsys activity recents

7) dumpsys activity activities //activity

8) dumpsys activity processes

依次简要说明这8条命令:

2.1 intents

输出对象:

PendingIntentRecord

2.2 broadcasts

主要输出的对象:

1)ReceiverList, BroadcastFilter,

2)IntentResolver,

3)BroadcastQueue, BroadcastRecord

4)Handler, Looper

2.3 provider

主要输出的对象:

1)ProviderMap

2)ContentProviderRecord, ContentProviderConnection

2.4 permissions

主要输出的对象:

1)UriPermission

2.5 Service

主要输出的对象:

1)ActiveServices,

2)ServiceRecord, ConnectionRecord,ProcessRecord

2.6 recents

主要输出的对象:

TaskRecord

2.7activities

主要输出的对象:

1)ActivityStackSupervisor, ActivityStack,

2)TaskRecord, ActivityRecord

3)ActivityThread, Activity

4)ViewRootImpl

5)Looper, MessageQueue

2.8 processes

主要输出的对象:

1)AMS各种进程对象

2)ProcessRecord, UidRecord

3 dumpsys 使用

adb shell dumpsys,默认打印出当前系统所有service信息,在后面可加上具体的服务名

需要列出当前运行的服务,可运行:

adb shell dumpsys | findstr DUMP

下面简单列下我用到的一些命令...(在编写脚本时需要获取一些状态值供判断用)

获取设备分辨率

adb shell dumpsys display | findstr DisplayDeviceInfo

DisplayDeviceInfo{"内置屏幕": 1080 x 1920, 55.0 fps, density 480, 464.949 x 468.923 dpi...

获取设备电池信息:

adb shell dumpsys battery

Current Battery Service state:

  AC powered: false

  USB powered: true

  Wireless powered: false

  status: 2 #电池状态

  health: 2

  present: true

  level: 34 #电量

  scale: 100

  voltage: 3848

  current now: -427943

  temperature: 280 #电池温度

  technology: Li-ion

获取cpu信息

adb shell dumpsys cpuinfo

获取内存信息:

adb shell dumpsys meminfo

要获取具体应用的内存信息,可加上包名

adb shell dumpsys meminfo PACKAGE_NAME

获取Activity信息:

adb shell dumpsys activity

加上-h可以获取帮助信息

获取当前界面的UI信息,可以用

adb shell dumpsys activity top

要获取当前界面的Activity:

adb shell dumpsys activity top | findstr ACTIVITY

获取package信息

adb shell dumpsys package

加上-h可以获取帮助信息

获取某个包的信息:

adb shell dumpsys package PACKAGE_NAME

获取通知信息:

adb shell dumpsys notification

NotificationRecord(0x44217920: pkg=com.sohu.newsclient useron=0x7f0201b5 / com.tencent.news:drawable/icon

  pri=0 score=0

  contentIntent=PendingIntent{4294d748: PendingIntentRecord{44088e90 com.tencent.news startActivity}}

  deleteIntent=null

  tickerText=null

  contentView=android.widget.RemoteViews@441fc810

  defaults=0x00000001 flags=0x00000010

  sound=null

  vibrate=null

  led=0x00000000 onMs=0 offMs=0

  extras={

    android.title=农业部:中国超级稻亩产超1吨

    android.subText=null

    android.showChronometer=false

    android.icon=2130837941

    android.text=农业部今日通报称,经专家测产,袁隆平领衔培育的中国“超级稻”亩产过千公斤,创造1026.7公斤新纪录。详情>>

    android.progress=0

    android.progressMax=0

    android.showWhen=true

    android.infoText=null

    android.progressIndeterminate=false

    android.scoreModified=false

  }

获取wifi信息:

adb shell dumpsys wifi

可以获取到当前连接的wifi名、搜索到的wifi列表、wifi强度等

获取电源管理信息:

adb shell dumpsys power

可以获取到是否处于锁屏状态:mWakefulness=Asleep或者mScreenOn=false

亮度值:mScreenBrightness=255

屏幕休眠时间:Screen off timeout: 60000 ms

屏幕分辨率:mDisplayWidth=1440,mDisplayHeight=2560

获取电话信息:

adb shell dumpsys telephony.registry

可以获取到电话状态,例如

mCallState值为0,表示待机状态、1表示来电未接听状态、2表示电话占线状态

mCallForwarding=false #是否启用呼叫转移

mDataConnectionState=2 #0:无数据连接 1:正在创建数据连接 2:已连接

mDataConnectionPossible=true  #是否有数据连接

mDataConnectionApn=  #APN名称

上一篇下一篇

猜你喜欢

热点阅读