收藏
回答

canvas 2D里渐变线createLinearGradient导致卡顿问题

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug canvas 2D 的 createLinearGradient 微信安卓客户端 8.0.28 2.30.0


最近项目上发现在canvas 2D 渲染上不断画随机渐变直线时,在一些android手机上会出现帧卡顿,而画普通直线则没有卡顿问题。

代码片段的功能:每个渲染帧,绘制 40根 长度为10 的 渐变线线,从上往下绘制。在oppo r9s plus手机上,每隔3~10秒,就概率性出现一次0.5~1秒的"长时间"卡顿,对动画效果影响很大。

代码片段在一些手机上的测试结果:

在oppo r9s plus(Android 6.0.1 微信8.0.28、8.0.32) 上有这种卡顿问题,

在vivo Y79A (Android 7.1.2 微信8.0.28)上有这种卡顿问题

在 iphone 7 plus 、iphone 14 pro Max 上没有这种卡顿问题

个人觉得每帧画线数量少、长度小,不至于出现因资源不足而长时间卡顿,查看手机cpu占用率也未超60%,应该是代码或调度上的问题。

也怀疑过是createLinearGradient分配内存过频繁,导致触发内存回收而卡顿,不过这貌似解析不了为什么在iphone上没出现。

createLinearGradient因参数无法固定,只能动态创建。请问是否有办法优化、解决?或者有什么别的渐变线方案替代?谢谢~~



回答关注问题邀请回答
收藏
登录 后发表内容