美文网首页
android 系统开发(4)---AMS 的dumpsys

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

作者: 做机人 | 来源:发表于2018-03-28 21:29 被阅读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名称

    相关文章

      网友评论

          本文标题:android 系统开发(4)---AMS 的dumpsys

          本文链接:https://www.haomeiwen.com/subject/lfoucftx.html