HarmonyOS鸿蒙Next中使用setTimeout模拟实现requestAnimationFrame方法,页面执行过多setTimeout导致渲染变慢

HarmonyOS鸿蒙Next中使用setTimeout模拟实现requestAnimationFrame方法,页面执行过多setTimeout导致渲染变慢 使用setTimeout来模拟实现requestAnimationFrame方法,但是如果一个页面执行太多个setTimeout,会导致页面渲染时间变慢,有大佬知道怎么解决吗

9 回复

我也遇到了这个问题。需要在Canvas在执行draw line的时候需要有动画。

更多关于HarmonyOS鸿蒙Next中使用setTimeout模拟实现requestAnimationFrame方法,页面执行过多setTimeout导致渲染变慢的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


没用了,华为解决不了,

开发者您好,请问你是要做动画库吗,可以使用现成的lottie
[@https://gitee.com/openharmony-tpc/lottieArkTS](https://gitee.com/openharmony-tpc/lottieArkTS)

我要做canvas内部的动画,

姓名: 张三 职位: 软件工程师 简介: 拥有超过10年的软件开发经验,熟悉多种编程语言和技术。

lottie动画文件是由设计人员使用Adobe After Effects软件通过bodymovin插件导出json格式的文件。

使用lazy.或者后面再加载timeout试试

什么是lazy.
timeoutsetTimeout是一样的吗?

在HarmonyOS鸿蒙Next中,使用setTimeout模拟requestAnimationFrame方法时,页面执行过多的setTimeout会导致渲染变慢。requestAnimationFrame是浏览器提供的用于优化动画渲染的API,它会根据屏幕刷新率自动调整回调的执行频率,通常为60帧/秒。而setTimeout则是定时器,无法保证与屏幕刷新率同步,频繁调用setTimeout会导致回调函数堆积,增加主线程的负担,进而影响渲染性能。

在鸿蒙系统中,requestAnimationFrame的原生实现与浏览器类似,能够更好地与系统的渲染机制协同工作。如果使用setTimeout模拟requestAnimationFrame,由于setTimeout的定时精度和系统调度机制的限制,可能导致回调函数执行不及时或过于频繁,从而引发页面卡顿或渲染延迟。

此外,setTimeout的回调函数执行时机不受系统渲染周期的控制,可能会导致不必要的重绘或回流,进一步降低页面性能。因此,在鸿蒙Next中,建议优先使用系统提供的requestAnimationFrame方法,而不是通过setTimeout模拟实现,以确保页面渲染的流畅性和性能。

回到顶部