当前位置: 首页 > article >正文

一种简单有效的分析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才出来,显示恢复正常。


http://www.kler.cn/a/559545.html

相关文章:

  • vscode无法预览Markdown在线图片链接
  • 跟着李沐老师学习深度学习(十三)
  • 国产芯片汽车气压表pcba方案
  • AI学习之-阿里天池
  • React fiber架构中 优先级是如何确定的?
  • 【Bluedroid】AVRCP 连接源码分析(三)
  • 【NLP算法面经】本科双非,头条+腾讯 NLP 详细面经(★附面题整理★)
  • SOME/IP--协议英文原文讲解10
  • c++———————————————c++11
  • 小型字符级语言模型的改进方向和策略
  • Opengl常用缓冲对象功能介绍及使用示例(C++实现)
  • 嵌入式工业级显示器在环保垃圾柜设备中发挥着至关重要的作用
  • Android14 Camera框架中Jpeg流buffer大小的计算
  • 2025年第一期 | CCF ODC《开源战略动态月报》
  • AI前端开发与远程工作模式下的效率革命:ScriptEcho赋能高效协作
  • 第10篇:组件生命周期与钩子函数
  • 15-最后一个单词的长度
  • 全面汇总windows进程通信(三)
  • Transformer Decoder 详解
  • ThinkPHP(TP)如何做安全加固,防webshell、防篡改、防劫持、TP漏洞防护