• adb shell dumpsys activity activities

  • Display #:屏幕的displayId,默认主屏是0,堆栈在display上自上而下输出,越往上越在栈顶图层越在上
  • RootTask #:根栈的taskId,原生非分屏场景的RootTask就是Task本身,也就是RootTask并没有包含嵌套其他子栈
  • type=:栈类别,一般应用栈是standard,桌面是home    mode=:窗口模式,全屏是fullscreen,原生悬浮窗是freeform、分屏是split-screen-primary和split-screen-secondary,若窗口类型是厂商自定义,可能输出不同的自定义值
  • mBounds=:Task的大小范围,全屏栈值都是0,分屏、悬浮窗才有值
  • mResumedActivity:栈中当前resume的activity
  • mLastPausedActivity:栈中当前pause的activity
  • * Task{2ad2d3b #158 type=standard A=10212:com.tencent.qqlive U=0 visible=true mode=freeform translucent=false sz=2}         RootTask的子Task信息(非分屏场景的RootTask就是Task本身,从taskId上可以看出),158是taskId,类型是普通应用,uid是10212,包名(进程名)是com.tencent.qqlive,用户id是0即主用户,窗口模式是悬浮窗,非透明栈,栈内有2个activity对象
  • affinity=:区别栈的亲和度,默认不配置就是包名,affinity可以使得一个应用内部的activity分属多个栈
  • intent=:表示启动该栈首个activity使用的intent
  • Activities=:表示task内部的activity集合,末尾的activity是栈顶的activity
  • mRootProcess=ProcessRecord{c3a5ced 3866:com.tencent.qqlive/u0a212} :root process表示栈根activity的进程(一个栈可能存在不同进程的activity),3866是进程id,u0a212是主用户下uid为10212的包
  • mResizeMode=:栈是否resizeable,决定栈能否支持多窗口
  • * Hist #:打印栈内每个activity的信息
  • packageName=:表明该activity所在包,processName=:表明该activity所在进程
  • launchedFromUid=:表明activity被哪个uid的包所启动(activity拉起溯源的关键信息)
  • Intent {:表示启动activity所用的intent,栈内根activity的这个intent与启动task的intent等同
  • baseDir=:表示activity所在包的安装路径, dataDir=:表明进程数据所在路径
  • CurrentConfiguration=:表明activity的当前的config信息     state=:表明activity的当前生命周期状态
  • idle=:表明该activity是否执行完onResume生命周期且回调系统侧刷新activity的idle状态,部分应用hook应用进程的一些调度后会导致该状态无法置true进而导致一些切换场景的问题
  • windows=:打印activity对应的window对象信息
  • mOrientation=:activity所请求的orientation值(Activity.setRequestedOrientation动态请求或者AndroidManifest.xml给activity节点静态配置android:screenOrientation值)
  • mVisible=:表明activity在系统侧是否已经设置visibile     mClientVisible=:表明是否通知应用端刷新activity窗口可见性
  • reportedDrawn=:表明activity的窗口是否绘制完毕
  • maxAspectRatio=:用于高长宽比全面屏使用,表明activity是否可以充满屏幕(targetsdk大于等于O的不配置默认满屏)
  • minAspectRatio=:用于低长宽比的折叠屏展开态使用,表明activity是否可以充满屏幕(S版本开始不配置默认满屏)
  • configChanges=:十六进制值,表明activity在AndroidManifest中配置的android:configChanges属性值,字符串与十六进程值对应关系参见ActivityInfo类,该值决定config发生变化时activity走relaunch还是onConfigurationChanged
  • adb shell dumpsys window windows

  • Window #:打印每个window的窗口信息,即WindowState对象,在dump信息中搜索窗口的关键字就搜这个
  • mDisplayId=:window所在displayId
  • rootTaskId=:window所在task的taskId(若是分屏窗口,则该taskId是分屏的根taskId,不是window所在task的taskId)
  • mOwnerUid=:窗口所在应用的uid   showForAllUsers=:窗口是否在所有用户下可见(attrs.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS可以达到窗口在所有用户下可见的目的)
  • package=:窗口所在应用包名
  • mAttrs=:应用指定的窗口起点和宽高
  • adjust=:反映的是窗口属性中的softInputMode值,作用于输入法弹出时窗口布局刷新
  • layoutInDisplayCutoutMode=:反映窗口是否需要使用挖孔(挖孔屏)、曲边(曲面屏),常量值在WindowManager中
  • ty=:窗口类型,比如应用窗口、输入法、壁纸之类的,常量值在WindowManager类中定义
  • fl=:窗口指定的flags,比如要透壁纸的SHOW_WALLPAPER   pfl=:窗口指定的privateFlags
  • vsysui=:作用于窗口是否显示导航栏和状态栏及其状态
  • Requested w= h=:请求的窗口宽高
  • mActivityRecord=:窗口对应的activity
  • mViewVisibility=:窗口可见性, 0x0是visible, 0x4是invisible,0x8是gone
  • mFullConfiguration=:窗口当前的config信息
  • mHasSurface=:窗口是否已创建surface
  • mFrame=:窗口的最终大小
  • WindowStateAnimator{:打印窗口对应的WindowStateAnimator对象
  • mSurface=:窗口对应的图层surface
  • shown=:表示图层是否显示
  • mDrawState=:窗口的绘制状态,应用若正常绘制完成状态应该为HAS_DRAWN
  • isVisible=:表明窗口是否可见
  • adb shell dumpsys SurfaceFlinger

一般查看图层dump信息按照以下步骤操作:

1、在dump文件中先搜索关键字HWC layers找到所有可见图层
  • Display 0 HWC layers:该节点下展示所有可见图层大小和位置信息(图层的可见区域一定是屏幕内的区域)
  • Layer name:表示图层名字
  • Window Type:窗口类型,比如应用窗口、输入法、壁纸之类的,常量值在WindowManager类中定义
  • Comp Type:表示图层合成方式,DEVICE表示GPU硬件合成、CLIENT表示CPU软件合成
  • Disp Frame:表示图层的位置(left、top、right、bottom)

2、找到目标图层并搜索图层名字

比如腾讯视频悬浮窗页面com.tencent.qqlive/com.tencent.qqlive.ona.activity.VideoDetailActivity#0,然后搜索该关键字找到图层bufferlayer

  • BufferStateLayer:图层bufferlayer是个BufferStateLayer, bufferlayer的父图层及以上节点都是ContainerLayer
  • Region VisibleRegion:指的是图层在屏幕内的可见区域
  • z=:图层的z轴顺序,也就是层级高低,值越大越高,不过不同应用栈的activity窗口层级比较,需要上溯到EffectLayer (Task=这个父图层去比较,看activity所在Task在TaskDisplayArea上的z值大小。
  • pos:图层起点
  • size=:图层大小
  • crop:图层裁剪区域(left,top,width,height)
  • cornerRadius=:图层圆角浮点值
  • tr=:图层缩放比
  • parent=:图层父节点
  • zOrderRelativeOf=:层级相对节点图层
  • metadata=:图层携带的metadata键值属性
  • shadowRadius=:图层的四周阴影半径,R版本开始SurfaceControl支持直接给图层设置阴影半径

WindowStateAnimator(WindowSurfaceController)

3、从BufferStateLayer可以一级级通过parent属性值往上溯源查看父节点ContainerLayer图层信息

WindowState ActivityRecord Task

android R版本常见dump信息分析相关推荐

  1. MT6761/MT6762.Android Q、Android R 版本如何配置 AF 相关的 Meta data

    [DESCRIPTION] MT6761/MT6762 AndroidAndroid Q.Android R 版本如何配置 AF 相关的 meta data [SOLUTION] 1./vendor/ ...

  2. Android R版本 MtkSettings和Telephony进程通信aidl

    需要获取simunlockstate状态,而这个不由我们这边控制,在免于提Mtk case的情况下,通过Telephony获取这个值,telephony是个服务apk,不能通过android.bp引入 ...

  3. JVM调优:heap dump信息分析

  4. Online Judge系统常见返回信息分析

    详见下述: Pending : 系统忙,你的答案在排队等待. Pending Rejudge : 因为数据更新或其他原因,系统将重新判你的答案. Compiling : 正在编译. Running & ...

  5. Android高版本P/Q/R源码编译指南

           Android高版本P/Q/R源码编译指南 Android源码编译系列博客: Android.bp你真的了解吗 Android.bp入门指南之Android.mk转换成Android.b ...

  6. Android R常见GC类型与问题案例

    前言 Android系统的APP运行需要依赖ART虚拟机(Android Runtime),ART虚拟机的主要作用是给APP的java代码提供运行环境,其中编译.执行.垃圾回收(GC)模块是ART虚拟 ...

  7. android R编译Super镜像时报错问题分析和定位

    在android R版本全编译时,遇到编译打包super.img时报错,这里介绍一下这种问题如何定位原因和解决,主要是描述一下分析的思路. 错误日志如下: out/target/product/tt/ ...

  8. 【JVM】jstack和dump线程分析(2)

    一:jstack jstack命令的语法格式: jstack  <pid>.可以用jps查看java进程id.这里要注意的是: 1. 不同的 JAVA虚机的线程 DUMP的创建方法和文件格 ...

  9. Android R WiFi热点流程浅析

    Android R WiFi热点流程浅析 Android上的WiFi SoftAp功能是用户常用的功能之一,它能让我们分享手机的网络给其他设备使用. 那Android系统是如何实现SoftAp的呢,这 ...

最新文章

  1. 教你用Android做二次开发,识别率达到科大讯飞语音输入水平 | 原力计划
  2. jquery源码解析:pushStack,end,ready,eq详解
  3. 打印JavaScript对象的内容? [重复]
  4. 开始了大概三四天的Rails学习之路
  5. sql注入pythonpoco_.NET EF(Entity Framework)详解
  6. LeetCode 66 加一
  7. [react] 说说你对声明式编程的理解?
  8. cmd oracle 连接实例_C#连接Oracle数据库的实例方法
  9. 数据结构与算法--1.整型变量值互换
  10. 这N张模板,做出了秒杀echarts和python的可视化大屏,老板很满意
  11. [Python] L1-029. 是不是太胖了-PAT团体程序设计天梯赛GPLT
  12. promise原理—一步一步实现一个promise
  13. 故障:“远程计算机需要网络级别身份验证
  14. TCP/IP 域名系统DNS
  15. 分治法——最大子列和问题
  16. 5773. 插入后的最大值
  17. zbbz cnk
  18. 雷电网络RESTful API手册中文版
  19. 如何判断一个文件的编码格式是gb2312还是gbk等
  20. 微信的这些功能超级实用

热门文章

  1. psft快捷方式参数,快速打开远端
  2. mysql禁止预读表信息
  3. 服务器显示被登录成功,登录云服务器成功的显示是什么
  4. 单片机应用系统常用的元器件
  5. 数组:交换两个对应的元素
  6. 线程池ThreadPoolExecutor的使用
  7. c语言程序设计的反思,C语言程序设计课程教学反思.doc
  8. vbox 虚拟机访问网络,各个虚拟机实现互通
  9. 有效项目治理的快速操作指南
  10. html自动请求favicon,如何防止favicon.ico请求?