我们是否应该期望在调试期间动画性能不佳

时间:2016-09-30 17:46:28

标签: android react-native

很抱歉,如果这个问题过于繁琐,我真的无法找到一个更好的React Native专家社区来询问..

在Android上调试我的应用程序时(运行" react-native run-android")我注意到动画有一种不稳定的感觉。这不是很糟糕,但绝对是一个轻微的滞后。对于诸如切换选项卡,浮动操作按钮和更改视图之类的事情,会发生这种情况。

这是因为我在调试模式下运行热重载这样的事情吗?或者我应该担心吗?有什么我可以做的来提高性能..

2 个答案:

答案 0 :(得分:2)

JS是一个单线程环境,您所声明的操作通常会导致Js线程负载过重。由于本地反应中的大多数动画仍然不是原生 - 在执行某些任务时,您会看到不稳定的动画。在调试模式下,此问题更加明显。

没有原生动画表现不佳,因为它们在Js中插入动画值,并调用本机方法(通过桥)来更新动画视图。

有两件事可能会占用您的应用。

  1. 日志在调试中启用,每个console.log通过网桥调用本机Log方法。你拥有的console.log越多,桥就越繁忙。这大大降低了调试性能。

  2. Js动画效果不佳。我知道Facebook上的优秀人员正在投入大量资金将动画卸载到本机方面。我认为NavigatorExperimental正在这样做。

  3. 您可能需要查看react-native-navigation,它为您提供完全原生的导航解决方案,以完全避免这些问题。只是免责声明,我是该项目的开发人员之一。

答案 1 :(得分:1)

在调试期间,正在执行其他任务,例如创建警告和验证propTypes。这些任务会影响性能。在生产中运行应用程序时,您将看到自动性能改进。

要了解您的应用在生产中的效果,您可以通过

停用 JS Dev Mode
  1. 在模拟器中打开开发人员菜单(命令⌘ + M )或在您的物理设备上(摇动设备或运行adb shell input keyevent 82(使用{{ 1}}用于设备或-d用于模拟器)),
  2. 选择开发设置并取消选中 JS开发模式
  3. 最后按两次 R 重新加载js包。
  4. 通常需要禁用开发模式,例如在开发动画时。禁用 JS Dev Mode 也是Profiling Android UI Performance的先决条件。

    有趣的读物是关于Performance的React Native的文档,其中部分解决了这个问题。