基于Android 7.0的源码分析

一.概述

前面介绍过AMS相关的一些数据结构,每个数据结构有大量的成员变量,为了查询当前手机运行时状态的 变化值,可以通过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 解释 对应源码
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状态 dumpProvidersLocked()
5 p[rocesses] [PACKAGE_NAME] 进程状态 dumpProcessesLocked()
6 o[om] 内存管理 dumpOomLocked()
7 i[ntents] [PACKAGE_NAME] pending intent状态 dumpPendingIntentsLocked()
8 r[ecents] 最近activity dumpRecentsLocked()
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条命令:

dumpsys activity intents
dumpsys activity broadcasts //广播
dumpsys activity providers  //provider
dumpsys activity permissions
dumpsys activity services  //服务
dumpsys activity recents
dumpsys activity activities //activity
dumpsys activity processes
复制代码

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

2.1 intents

//标志性开头,dumpPendingIntentsLocked
ACTIVITY MANAGER PENDING INTENTS (dumpsys activity intents)
复制代码

输出对象:

  • PendingIntentRecord

2.2 broadcasts

//标志性开头,dumpBroadcastsLocked
ACTIVITY MANAGER BROADCAST STATE (dumpsys activity broadcasts)Registered Receivers:Receiver Resolver Table:Historical broadcasts [foreground]:Historical broadcasts summary [foreground]:Historical broadcasts [background]:Historical broadcasts summary [background]:Sticky broadcastsmHandler
复制代码

主要输出的对象:

  • ReceiverList, BroadcastFilter,
  • IntentResolver,
  • BroadcastQueue, BroadcastRecord
  • Handler, Looper

2.3 provider

//标志性开头,dumpProvidersLocked
ACTIVITY MANAGER CONTENT PROVIDERS (dumpsys activity providers)Published single-user content providers (by class):Published user [n] content providers (by class):Single-user authority to provider mappings:User [n] authority to provider mappings:
复制代码

主要输出的对象:

  • ProviderMap
  • ContentProviderRecord, ContentProviderConnection

2.4 permissions

//标志性开头,dumpPermissionsLocked
ACTIVITY MANAGER URI PERMISSIONS (dumpsys activity permissions)
复制代码

主要输出的对象:

  • UriPermission

2.5 Service

//标志性开头,newServiceDumperLocked().dumpLocked
ACTIVITY MANAGER SERVICES (dumpsys activity services)
复制代码

主要输出的对象:

  • ActiveServices,
  • ServiceRecord, ConnectionRecord,ProcessRecord

2.6 recents

//标志性开头,dumpRecentsLocked
ACTIVITY MANAGER RECENT TASKS (dumpsys activity recents)
复制代码

主要输出的对象:

  • TaskRecord

2.7 activities

//标志性开头,dumpActivitiesLocked
ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)Display #0 (activities from top to bottom):Stack #0:Task id #[n]* Hist #[m]:Stack #1:
复制代码

主要输出的对象:

  • ActivityStackSupervisor, ActivityStack,
  • TaskRecord, ActivityRecord
  • ActivityThread, Activity
  • ViewRootImpl
  • Looper, MessageQueue

输出格式样例:

//{Hashcode #TaskId Affinity UserId 该task的Activity个数};
TaskRecord{e6d7a8e #156 A=com.gityuan.demo U=0 sz=1}
userId=0 effectiveUid=1000 mCallingUid=1000 mCallingPackage=android
realActivity=com.gityuan.demo/.Blog//ProcessRecord{Hashcode pid:进程名/uid}
ProcessRecord{7c8a2af 12265:com.gityuan.demo/1000}
复制代码

2.8 processes

//标志性开头,dumpProcessesLocked
ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes)All known processes:Isolated process list (sorted by uid):UID states:UID validation:Process LRU list (sorted by oom_adj, 60 total, non-act at 2, non-svc at 2):PID mappings:Foreground Processes:
复制代码

主要输出的对象:

  • AMS各种进程对象
  • ProcessRecord, UidRecord

转载:http://gityuan.com/2017/07/04/ams_dumpsys/

转载于:https://juejin.im/post/5c067ed8f265da613b6f8bfa

转:AMS之dumpsys篇相关推荐

  1. dumpsys activity用法汇总

    2020年3月14日11:21:04 一. 概述 1.1 dumpsys 命令用法 可通过 dumpsys 命令查询系统服务的运行状态 (对象的成员变量属性值),命令格式:dumpsys 服务名, 例 ...

  2. android adb调试技巧

    参考链接 超详细的dubug教程 Android Studio 调试技巧 Android中开发需要的高效助推的命令总结 Android adb shell am 命令介绍 adb shell dump ...

  3. Android10.0 开机广播BOOT_COMPLETED发送流程分析

    原文地址:https://skytoby.github.io/2019/%E5%BC%80%E6%9C%BA%E5%B9%BF%E6%92%ADBOOT_COMPLETED%E5%8F%91%E9%8 ...

  4. Android 中的卡顿丢帧原因概述 - 低内存篇

    在Android 中的卡顿丢帧原因概述 - 系统篇 这篇文章中 , 实际案例这里我们有列举一些由于系统低内存导致的卡顿 , 由于 Android 低内存对整机性能影响比较大 , 所以单独写一篇文章 , ...

  5. 【建议收藏】2020年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(Android基础篇)...

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. A awesome android expert interview questions a ...

  6. dumpsys meminfo 详解

    源码基于:Android R 0. 前言 其实,很久以前在 android 查看内存使用情况 一文中已经分析过dumpsys meminfo,但最近在统计内存数据的时候发现怎么也对不上,所以重新分析了 ...

  7. adb shell dumpsys 使用命令和来源

    一.概述 adb shell dumpsys 在Android开发中经常要用到,平时都是零碎的积累,用到什么的时候就 记录下来,最近看了一些资料,发现可以汇总所有的命令,当带某个参数的时候,就可以查看 ...

  8. Android安全问题 抢先接收广播 - 内因篇之广播接收器注册流程

    导读:本文说明系统是如何注册动态广播以及静态广播,这里主要注意其注册的顺序 这篇文章主要是针对我前两篇文章 android安全问题  抢先开机启动 - 结果篇 android安全问题  抢先拦截短信 ...

  9. python群控_带你用 Python 实现自动化群控入门篇

    点击上方"AirPython",选择"加为星标"第一时间关注 Python 技术干货! 1. 前言 群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完 ...

最新文章

  1. Spring4 MVC + REST + List + Bootstrap 简单示例
  2. imoocLinux环境变量配置文件笔记
  3. 第八节:语法总结(2)(匿名类、匿名方法、扩展方法)
  4. 9 Fresh jQuery Media Players
  5. C#LeetCode刷题之#371-两整数之和(Sum of Two Integers)
  6. 让敏捷的回顾会议变得有趣而高效
  7. Google 要用 Flutter 一统移动、桌面开发江湖?
  8. 美国特勤局发布十大网络通缉犯名单
  9. 20145122《Android开发基础》实验四实验报告
  10. WEB UI基础八:链接跳转到标准的工单界面
  11. 中国诚信全球垫底?讲讲《Science》现在的论文有多不靠谱
  12. 问题 1020: [编程入门]猴子吃桃的问题
  13. 目标检测(Object Detection)
  14. 1167. Anagrammatic Distanc (字符串匹配)
  15. Vue中error ‘XXXXX‘ is not defined no-undef解决办法
  16. 台湾ICPlus IP175GHI, 85nm /极低功率,5接口10/100以太网集成交换机芯片
  17. Kotlin 注解全解析
  18. ‘xxx‘ “将对您的电脑造成伤害。 您应该将它移到废纸篓。”mac一直弹窗并关不掉的解决方式
  19. 我的python面试简历
  20. Python批量制作抖音的卡点视频原来这么简单!

热门文章

  1. APACHE2 修改HTTPD.CONF 后启动错误
  2. Android Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE解决办法
  3. android事件分发 入口(dispatchTouchEvent)
  4. Android Json操作
  5. 应急模拟系统功能结构图
  6. cesium obj转b3dm转换及加载
  7. java对象是如何创建的
  8. 303. Range Sum Query - Immutable
  9. Spring Data JPA 查询方法支持的关键字
  10. firebug的一个有趣现象