对于分析一些显示问题,我们需要使用adb shell dumpsys SurfaceFlinger命令来获取SurfaceFlinger的dump信息,因此这里来详细讲解下SurfaceFlinger的dump信息。

Display identification data:      //display信息 
Display 19260441557360770 (HWC display 0): port=130 pnpId=QCM displayName=""  //19260441557360770是HWC dislay id

Visible layers (count = 70)   //count的值来源于layersSortedByZ中layer的数量.

*- Output Layer 0xb4000073181a9a30(SurfaceView - com.qiyi.video/org.iqiyi.video.activity.PlayerActivity#0)   //括号里是当前layer的名称
Region visibleRegion (this=0xb4000073181a9a48, count=1)  //visibleRegion,表示可见区域的大小.每个region可能包含多个区域,所以这里count也可能不等于1.
    [  0,  38, 2340, 1041]
        Region visibleNonTransparentRegion (this=0xb4000073181a9ab0, count=1)
    [  0,  38, 2340, 1041]
        Region coveredRegion (this=0xb4000073181a9b18, count=1)
    [  0,  38, 2340, 1041]
        Region output visibleRegion (this=0xb4000073181a9b80, count=1)
    [ 39,   0, 1042, 2340]
        Region shadowRegion (this=0xb4000073181a9be8, count=1)
    [  0,   0,   0,   0]
      forceClientComposition=false clearClientTarget=true displayFrame=[39 0 1042 2340] sourceCrop=[0.000000 0.000000 1002.000000 2340.000000] bufferTransform=0 (0) dataspace=UNKNOWN (0) z-index=0 
      hwc: layer=0x0824 composition=DEVICE (2)    //表明这个layer是device合成

layerStack=   0, z=        3, pos=(0,0), size=(   0,   0), crop=[  0,   0,  -1,  -1], cornerRadius=0.000000, isProtected=0, isOpaque=0, invalidate=1, dataspace=Default, defaultPixelFormat=Unknown/None, backgroundBlurRadius=0, color=(0.000,0.000,0.000,1.000), flags=0x00000000, tr=[0.00, 0.00][0.00, 0.00]
parent=DefaultTaskDisplayArea#0
zOrderRelativeOf=none
activeBuffer=[   0x   0:   0,Unknown/None], tr=[0.00, 0.00][0.00, 0.00] queued-frames=0, mRefreshPending=0, metadata={5:4bytes}, cornerRadiusCrop=[0.00, 0.00, 0.00, 0.00], shadowRadius=0.000, 
      
//layerStack: 表示这个layer是保存在哪个layerstack中(不同的display是有不同的layerstack的,这点可以通过一个连接HDMI时的layerstack很容易确认).
//z: 表示Z轴坐标,z值越大,layer越靠上.
//pos: pos的值是layer左上角的位置.
//size: 是layer的大小.
//crop: crop代表裁剪区域.
//isOpaque: 代表是否是不透明的,只有完全不透明的layer这个值才是1.
//invalidate: 表示这个layer的数据是失效的,这个值绝大多数情况下都是0.
//alpha: 表示了这张layer的透明度,这个值跟isOpaque是有区别的.isOpaque表示了这个layer可以是透明的,也就是没有显示数据的地方;而alpha表示透明度,也即是有数据的地方也可以因为透明度而受到影响产生透明的效果.
//tr: 代表屏幕的旋转和缩放程度.大多数的layer实际上是不需要旋转和缩放的,因为他们定义的大小就是跟屏幕一致的.

Display 19260441557360770 HWC layers:   //Display 的layers合成信息
-----------------------------------------------------------------------------------------------------------------------------------------------
 Layer name
           Z |  Window Type |  Layer Class |  Comp Type |  Transform |   Disp Frame (LTRB) |          Source Crop (LTRB) |     Frame Rate (Explicit) [Focused]
-----------------------------------------------------------------------------------------------------------------------------------------------
 SurfaceView - com.qiyi.video/org.iqiyi.video.activity.PlayerActivity#0
  rel     -2 |            0 |            0 |     DEVICE |          0 |   39    0 1042 2340 |    0.0    0.0 1002.0 2340.0 |                              [*]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 com.qiyi.video/org.iqiyi.video.activity.PlayerActivity#0
  rel      0 |            1 |            0 |     DEVICE |          0 |    0    0 1080 2340 |    0.0    0.0 1080.0 2340.0 |                              [*]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 ScreenDecorOverlay#0
  rel      0 |         2024 |            0 |     DEVICE |          0 |    0    0 1080   60 |    0.0    0.0 1080.0   60.0 |                              [ ]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 ScreenDecorOverlayBottom#0
  rel      0 |         2024 |            0 |     DEVICE |          0 |    0 2280 1080 2340 |    0.0    0.0 1080.0   60.0 |                              [ ]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

这里注意:SurfaceView的Layer Z轴位置是小于用来其宿主Activity窗口的Layer的Z轴位置的,但是前者会在后者的上面挖一个“洞”出来,以便它的UI可以对用户可见。实际上,SurfaceView在其宿主Activity窗口上所挖的“洞”只不过是在其宿主Activity窗口上设置了一块透明区域。

Android dumpsys SurfaceFlinger分析相关推荐

  1. android surfaceflinger 老罗,「Android」SurfaceFlinger分析

    本篇针对surfaceFlinger模块进行分析,目录如下: 1.SurfaceFlinger功能 1.1.BufferQueue原理(native/libs/gui模块) 1.2   layer显示 ...

  2. 「Android」SurfaceFlinger分析

    本篇针对surfaceFlinger模块进行分析,目录如下: 1.SurfaceFlinger功能 1.1.BufferQueue原理(native/libs/gui模块) 1.2   layer显示 ...

  3. Android 内存泄漏分析指北

    android 内存泄漏分析指北 简单来说内存泄漏就是当对象不再被应用程序使用,但是垃圾回收器却不能移除它们,因为它们正在被引用 java 垃圾回收介绍: Java 虚拟机运行所管理的内存包括以下几个 ...

  4. Android后台耗电分析及优化

    原文见: 在路上的blog Android后台耗电分析及优化 一.什么是耗电优化? 二.耗电优化第一个方向:优化后台耗电 1.唤醒锁定操作卡住(前台&后台) 2.唤醒次数过多 3.WLAN扫描 ...

  5. Android App 耗电量分析-1

    分为新老两个版本的SDK-TOOL,新版的放在另外一篇博客 Android App 电量分析https://blog.csdn.net/kan137g/article/details/84886277 ...

  6. Android内存泄漏分析

    内存泄漏指的是程序中不再使用的对象对象由于某些原因无法被正常GC回收.对象没 有及时释放,就会占据宝贵的内存空间,因而导致后续分配内存的时候,内存空间不足出现OOM.如果无用对象占据的控件越大,那么可 ...

  7. 安卓dumpsys SurfaceFlinger输出示例

    adb shell dumpsys SurfaceFlinger 结果输出示例 Build configuration: [sf PRESENT_TIME_OFFSET=0 FORCE_HWC_FOR ...

  8. Android display架构分析-SW架构分析(1-8)

    参考: Android display架构分析二-SW架构分析 Android display架构分析三-Kernel Space Display架构介绍 Android display架构分析四-m ...

  9. 高通Android display架构分析

    目录(?)[-] Kernel Space Display架构介绍 函数和数据结构介绍 函数和数据结构介绍 函数和数据结构介绍 数据流分析 初始化过程分析 User Space display接口 K ...

最新文章

  1. ormlite 多表联合查询
  2. MPLS *** Trouble Shooting 笔记
  3. 死锁产生的条件+排除死锁的方法
  4. 《廖雪峰 . Git 教程》学习总结
  5. 计算机科学与技术 单片机,单片机-兰州交通大学计算机科学与技术实验教学中心...
  6. 转载:mongoDB java驱动学习笔记
  7. 原始Dao开发方法以及存在的问题
  8. USB移动硬盘使用中的怪现象
  9. Unity3D(四)Camera和SkyBox
  10. 知网论文复制格式问题-文本修改器
  11. 威纶触摸屏在easybuilder中如何组态添加滑动开关元件?
  12. c语言程序设计小球弹跳,C语言实现弹跳小球
  13. 小球放入盒中的方法总结(排列组合)
  14. Python-Scrapy-抓取链家二手房信息
  15. python控制苹果手机触摸屏失灵怎么办_苹果手机触摸屏失灵的各种解决方法
  16. Unity3D 2D游戏摄像机的跟随实现
  17. 解决华为安全键盘收回, 软键盘位置没收回的问题
  18. 当我们讨论“平台”,我们在说什么
  19. 如何使用js添加html标签
  20. db2 删除索引_你想要拥有自己的搜索引擎吗?

热门文章

  1. 关于SetCapture() 和 ReleaseCapture()的用法的个人理解
  2. Linux Mint在进行网上银行交易需谨慎
  3. 【收藏】BPF 技术介绍及学习路线分享
  4. PS中光芒四射游戏效果
  5. request对象、response对象、session对象
  6. C#设计模式--抽象工厂模式
  7. OCAD应用:单反射镜扫描光学系统初始结构设计
  8. Class文件结构介绍[属性表集合]
  9. 人生励志博文系列收集
  10. 新Java运动Nava:师PHP技术以开发Web应用