安卓车载手机原生多屏闪黑问题分析及修复成果展示

背景:

前面给大家布置了多屏情况下的闪黑问题作业

安卓wms窗口类闪黑,黑屏等疑难问题你会吗?-vip学员作业

https://mp.weixin.qq.com/s/TsvmXTt7rWyyJZGVglG7Bg

今天来给大家展示一下马哥这边的对作业问题的分析和修复成果。

多屏闪黑原因分析:

要分析黑屏,那就必须要抓取winscope才可以分析出来相关的原因

抓取后,我们先来看看主副屏的黑屏情况先看看现象。

副屏因为没有录屏所以看不到。

注意这里可能会有视频黑屏后图层没有黑屏情况,这个原因前面wms课程blog等中应该讲解过,因为视频的帧率和图层的帧率本事是不一样的,所以二者不能代表每一帧都同步。

比如手机刷新率是90帧每秒,但是视频录制的帧率是30帧每秒,所以这块肯定是会有比较大的差异哈。

但是大体上还是一致的,不可能黑屏就只黑一帧,一般都会黑100ms+,所以也不太影响分析和使用。

下面分析主屏黑屏的原因

可以看出黑屏原因是主屏幕当前没有可以显示的图层。

因为原来显示的Task要重新reparent到新的屏幕display中,但是主屏幕底部的Task还处于不可以显示状态。

因为底部Task的显示是需要时间的,所以自然在Task还没有显示的这段时间就是黑屏的状态。

总结主屏黑屏原因:

在多屏启动过程中,主屏幕的task会直接reparent到新的display,但是主屏幕的底部task显示是需要一段时间的,这段时间就会一直黑屏。

副屏的黑屏:

主屏幕黑屏可以理解,那为啥副屏还会黑屏呢?

先看看副屏的黑屏情况:

副屏有内容时候,顶部就是主屏的task内容

黑屏时候出现没有了顶部的Task图层

可以看到副屏显示黑屏时候其实也是什么都没有,那么为啥会啥都没有呢?

这里主要是这个时候Task也是没有可以显示的图层

因为move过来的Task到了新屏幕要进行relauncher操作,因为可能屏幕密度等config是有差异的,自然要进行重启重新创建,创建时候底部task又是被隐藏状态。

问题修复成果

普通修复方案:

副屏黑屏问题的闪黑问题,其实以前在马哥课程里面已经有讲解过相关的方案,具体看马哥多屏互动课程。

主屏的黑屏,这块其实就需要考虑好时序,需要提前把底部的Task进行显示绘制成功后,在考虑使用reparent到副屏慕的时序。

进阶修复方案:

高版本支持ShellTransition了,是否考虑学习了ShellTransition后,这几个WindowContainer都放入到Transition呢?

相关修复成果展示:

https://www.bilibili.com/video/BV1U8V26LEc8/

相关推荐
事圆则缓1 小时前
Android 多渠道打包实战:Product Flavors、签名、AAB 与发包校验
android
树下困觉眯4 小时前
View绘制流程学习--获取WindowManager的三种方式
android·系统架构·view design
vilya5 小时前
我怎么给手机 GUI Agent 做双通道感知:无障碍树为主,投屏像素兜底
android·人工智能
DP DPharness5 小时前
手机连不上 DSH 时的排错顺序:从 401 到 WebSocket 放行
websocket·网络协议·智能手机
李子红了时6 小时前
阿狸舞台APP(安卓端手机EncFS解密+压缩包解压+视频播放)
android·音视频
事圆则缓6 小时前
Android 使用 Jenkins 实现 CI/CD,并用 SonarQube 建立质量门禁
android·ci/cd·jenkins
其实防守也摸鱼6 小时前
DeepSeek Harness 开源贡献手记:从 Issue 到 Merge 的完整旅程
android·数据库·学习·ai·oracle·自动化
恋猫de小郭6 小时前
Android CLI 支持 AI Agent 通过 Device Streaming 调试云真机
android·前端·flutter
开开心心就好6 小时前
以图搜图找重复图片,本地工具离线就能用
javascript·智能手机·ffmpeg·c#·ocr·word·音视频
素师良码1 天前
第5篇:显示驱动必备调试工具浅析
android