ios-rn-sdk icon indicating copy to clipboard operation
ios-rn-sdk copied to clipboard

米家App扩展程序运行效率低下

Open hlilab-dev opened this issue 6 years ago • 5 comments

实体设备iphone6,ios版本12.0。 为了提升用户体验,我们在UI中加入了简单动画效果。出现问题如下: 1.测试时发现动画效果卡顿明显。 2.定时器存在误差巨大的情况。

造成这个问题的原因是什么? 我们猜测目前有几种可能: 1.测试设备性能不足。 2.React Native处于开发者模式。 3.UI渲染过于复杂。

目前,我们已经排除了1,3两种可能。我们更换了性能更强的iphone8,以及建立一个最简单的动画测试,依旧发现同样的问题。

请协助我们查询关键问题所在,并提供解决方案。谢谢。

hlilab-dev avatar Dec 08 '18 03:12 hlilab-dev

@icedu8910 动画用的什么做的? 定时器又用的什么? more details

LiuMengzhou avatar Dec 12 '18 02:12 LiuMengzhou

@LiuMengzhou 动画用的什么做的? 定时器又用的什么? more details

你好: 我们使用了官方建议的Animated动画方法封装了一个半圆形的进度条。在this.state里面定义了一个进度数据,绑定在进度条控件上。之后使用Animated.timing方法,使进度条平滑移动。但在实体机上,能明显感觉到掉帧。 我们做了一个最简单的定时器测试。在空的项目中使用了this.timer1s=setInterval方法,定时一秒钟。每一秒打印一次console,log。通过对比调试页面得到的console.log和电脑系统时钟,发现每隔10秒,就有4秒的误差。 我们使用console.log打印“DEV”,发现为:"true"。与这个有关系吗?

hlilab-dev avatar Dec 12 '18 03:12 hlilab-dev

可以尝试关闭Chrome调试选项,或者在WiFi情况更好的环境下测试(例如电脑开热点给手机使用),RN动画在这些情况下是会存在卡顿。

blockdate avatar Dec 12 '18 03:12 blockdate

可以尝试关闭Chrome调试选项,或者在WiFi情况更好的环境下测试(例如电脑开热点给手机使用),RN动画在这些情况下是会存在卡顿。

你好,我们尝试过多种方法,包括关闭米家APP中的插件调试(即在Chrome中不再收到调试数据),以及项目完整打包,不再依托电脑运行依旧出现画面卡顿的情况。并且就连最简单的定时器都存在如此巨大的误差。 我们关闭Chrome调试选项后,在APP内用console.log打印开发者状态:DEV依旧为true。根据官方的说法,这个选项将消耗大量的资源。画面的卡顿跟这个有关系吗?

hlilab-dev avatar Dec 12 '18 03:12 hlilab-dev

  1. Animated 动画出现卡顿可能是使用频繁 setState,导致 useless repaint。
  2. 如果你们想用进度条,可以不用自己绘制,有很多progress 组件(用ART绘制的)可以直接用。E.g. react-native-progress
  3. setInterval不精准很正常,和调试环境相关,也和代码有关。可以换一个定时器试试。定时器
  4. DEV = true表示打开了调试模式,和是否打开Chrome调试无关。

LiuMengzhou avatar Dec 12 '18 03:12 LiuMengzhou