surfaceView 遇到的问题及思考

本文探讨了在Android开发中使用SurfaceView遇到的黑屏、Crash和首帧数据延迟等问题,详细分析了问题原因并提供了解决方案。针对不同场景,如退后台过程中的黑屏,提出了通过设置Dummy Surface优化用户体验的方法。同时,文章还指出系统定制化和业务代码是导致Crash的主要因素,并给出了针对性的改进措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

降功耗,提清晰度(华为超分算法),流畅度(一加插帧算法)

规划

为了surfaceView能稳定能上线,采用和华为(历史就有合作)合作的方式进行,一共分为3个阶段推进。
具体如下:

  1. SurfaceView可用
  2. 保证surfaceView可用,无crash。
  3. SurfaceView 首帧优化
  4. 保证使用surfaceView的情况,首帧和textureview持平
  5. SurfaceControl 最佳实践,android 系统 >= 10.0 可用

踩坑及解决方案

1. 黑屏

1. Zorder -3

surfaceview送显(送显就是给surfaceview填充图像数据)晚了,导致surfaceView无内容绘制,导致黑屏。
排查方向切换过程中dummy surface(占位不黑屏作用)或者surface + play 绑定关系出现异常。正常情况下只要player 正常 codec工作,就会送帧数据给surfaceview。

2. surface + player 张冠李戴

架构情况导致,不通用

3. 退后台过程中屏幕黑屏

dummy surface 的是否使用了。由于surfaceView 只要gone掉,surface立马销毁,会出现黑屏情况,为了避免,这种情况,可以通过设置setSurface(null)的方式,通知播放器使用dummy surface 占位,优化体验。

2. 各种 Crash

crash主要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值