一种简单有效的分析qnx+android智能座舱项目中的画面闪烁的方法(8155平台)

在智能座舱项目的开发过程中,画面闪烁问题是一个常见但棘手的挑战。由于这些闪烁现象往往转瞬即逝,传统的分析工具如截图、录屏或dump图层等方法难以捕捉和定位问题根源。针对这一难题,本文介绍了一种较为有效的分析方法,能够帮助开发团队快速识别并解决画面闪烁问题,从而提升智能座舱系统的稳定性和用户体验。

1、 问题描述
【操作步骤】分屏界面选择导航/音乐进行全屏显示时
【预期结果】分屏界面选择导航/音乐进行全屏显示时,音乐/导航显示部分不会短暂显示黑色背景
【实际结果】分屏界面选择导航/音乐进行全屏显示时,音乐/导航显示部分会短暂显示黑色背景
【发生概率】必现

2、debug分析过程
(1)先通过adb命令关闭动画,看看是否还能复现问题,用来排查动画不正确导致的闪屏问题。
adb shell settings put global window_animation_scale 0
adb shell settings put global transition_animation_scale 0
adb shell settings put global animator_duration_scale 0

(2)先通过录屏工具进行录屏操作,然后一帧一帧播放,定位大概是哪里的问题。

(3)添加systrace和log定位问题:

a. ViewRootImpl的performDraw() 的trace添加rootView的宽和高信息。

在这里插入图片描述

b.SurfaceControl 的hide,show,setAlpha 添加trace
在这里插入图片描述
c. SurfaceFlinger每次合成都打印当前输出layer的位置和大小信息。
在这里插入图片描述

简单讲一下SurfaceFlinger的合成的流程:
首先来一份常见的trace
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

添加log之后复现问题,通过log和trace分析问题。
在这里插入图片描述
DockedStackDivider 退出的时候,第二帧就出现了黑屏,是因为activity没显示出来,直到SurfaceView size正常了,activity才出来,显示恢复正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值