ios-rn-sdk
ios-rn-sdk copied to clipboard
米家App扩展程序运行效率低下
实体设备iphone6,ios版本12.0。 为了提升用户体验,我们在UI中加入了简单动画效果。出现问题如下: 1.测试时发现动画效果卡顿明显。 2.定时器存在误差巨大的情况。
造成这个问题的原因是什么? 我们猜测目前有几种可能: 1.测试设备性能不足。 2.React Native处于开发者模式。 3.UI渲染过于复杂。
目前,我们已经排除了1,3两种可能。我们更换了性能更强的iphone8,以及建立一个最简单的动画测试,依旧发现同样的问题。
请协助我们查询关键问题所在,并提供解决方案。谢谢。
@icedu8910 动画用的什么做的? 定时器又用的什么? more details
@LiuMengzhou 动画用的什么做的? 定时器又用的什么? more details
你好: 我们使用了官方建议的Animated动画方法封装了一个半圆形的进度条。在this.state里面定义了一个进度数据,绑定在进度条控件上。之后使用Animated.timing方法,使进度条平滑移动。但在实体机上,能明显感觉到掉帧。 我们做了一个最简单的定时器测试。在空的项目中使用了this.timer1s=setInterval方法,定时一秒钟。每一秒打印一次console,log。通过对比调试页面得到的console.log和电脑系统时钟,发现每隔10秒,就有4秒的误差。 我们使用console.log打印“DEV”,发现为:"true"。与这个有关系吗?
可以尝试关闭Chrome调试选项,或者在WiFi情况更好的环境下测试(例如电脑开热点给手机使用),RN动画在这些情况下是会存在卡顿。
可以尝试关闭Chrome调试选项,或者在WiFi情况更好的环境下测试(例如电脑开热点给手机使用),RN动画在这些情况下是会存在卡顿。
你好,我们尝试过多种方法,包括关闭米家APP中的插件调试(即在Chrome中不再收到调试数据),以及项目完整打包,不再依托电脑运行依旧出现画面卡顿的情况。并且就连最简单的定时器都存在如此巨大的误差。 我们关闭Chrome调试选项后,在APP内用console.log打印开发者状态:DEV依旧为true。根据官方的说法,这个选项将消耗大量的资源。画面的卡顿跟这个有关系吗?
-
Animated
动画出现卡顿可能是使用频繁setState
,导致 useless repaint。 - 如果你们想用进度条,可以不用自己绘制,有很多progress 组件(用ART绘制的)可以直接用。E.g. react-native-progress
-
setInterval
不精准很正常,和调试环境相关,也和代码有关。可以换一个定时器试试。定时器 -
DEV = true
表示打开了调试模式,和是否打开Chrome调试无关。