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

一种简单有效的分析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.dtcms.com/a/30977.html

相关文章:

  • solidity之Foundry安装配置(一)
  • Linux 高级篇 日志管理、定制自己的Linux系统、备份与恢复
  • shell 脚本中的 sh 和 bash 是有区别的
  • Ollama Linux 部署指南
  • 国产开源PDF解析工具MinerU
  • 【鸿蒙开发】第四十章 Form Kit(卡片开发服务)
  • JavaScript系列(79)--Web Worker 高级应用
  • coco格式
  • Elasticsearch常用的查询条件
  • 记录一次 ALG 的处理过程
  • Ubuntu24.04LTS的下载安装超细图文教程(VMware虚拟机及正常安装)
  • 网络安全域管理 网络安全管理体系
  • python的多线程机制和构造
  • 代码随想录算法训练营第四十五天| 动态规划08
  • 大模型产品Deepseek(八)、数据嵌入+知识库管理+联网搜索,实现精准的知识查询
  • 为什么 MySQL 选择使用 B+ 树作为索引结构?MySQL 索引的最左前缀匹配原则是什么?MySQL 三层 B+ 树能存多少数据?
  • [OD E 100] 生成哈夫曼树
  • Java 字符串
  • 51c大模型~合集69
  • 最新版本Exoplayer扩展FFmpeg音频软解码保姆级教程
  • 简单易懂,解析Go语言中的Map
  • Unity 适用于单机游戏的红点系统(前缀树 | 数据结构 | 设计模式 | 算法 | 含源码)
  • postman调用ollama的api
  • REACT学习DAY02(恨连接不上服务器)
  • 垃圾回收知识点
  • 3.12 企业级智能文档引擎:从技术手册到产品报告的全链路自动化实践指南
  • 超简单理解KMP算法(最长公共前后缀next数组、合并主子串、子串偏移法)
  • QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,压缩进度
  • Minio分布式多节点多驱动器集群部署
  • 如何使用Python快速开发一个带管理系统界面的网站-解析方案