【问题标题】:Stack navigator slowing down with usage - React-native Android堆栈导航器因使用而减慢 - React-native Android
【发布时间】:2018-02-15 11:47:37
【问题描述】:

我已经设置了一个 React-Native Android 应用。它有几个屏幕、一个登录页面和一些其他页面,但我面临一个问题,即应用程序使用速度变慢。在几个屏幕之间多次导航后,组件无法渲染,图标消失并且屏幕转换变慢。如果广泛使用,我的意思是如果我继续导航和导航,应用程序最终会变得无法使用。我该如何解决这个问题?

请注意-我没有使用 Redux 或任何路由器,只是 stacknavigator。我认为这是调试版本的问题,但我生成了一个签名的 APK,问题也仍然存在。

如何重置堆栈导航器并从中删除所有以前的状态以清理内存?

【问题讨论】:

  • 感觉像内存泄漏
  • 是的。但是我如何确定它在哪里呢?
  • 首先检查所有图像应该如何回收/删除
  • 什么导航库?
  • 堆栈导航器

标签: android reactjs react-native


【解决方案1】:

我浏览了应用程序的整体流程,发现在某些地方堆栈没有清除,它一直在建立。例如,当提示用户退出时,堆栈并没有被清除,而是更多的页面被添加到堆栈中。当用户多次登录和注销时,堆栈会变得更大。

另外,我在某处读到,android 上的 react-native 在单线程上运行,而在 iOS 上运行多线程。

与原生代码不同,在 react 中,您必须非常认真地对待内存管理。在将卸载的页面中删除事件侦听器。

这是我用来在几个地方重置堆栈的代码。

import { NavigationActions } from 'react-navigation'

this.props.navigation.dispatch(NavigationActions.reset({
    index: 0,
    key: null,
    actions: [NavigationActions.navigate({ routeName: 'ParentStackScreen' })]
}))

【讨论】:

  • “另外,我在某处读到,android 上的 react-native 在单线程上运行,而在 iOS 上运行多线程。” IOS和Android会有性能差异吗?我已经测试了连接到同一个 wifi 网络的两个设备,结果没有任何差异。 )
  • 我在 iOS 设备上运行时遇到了零问题,但在 Android 设备上运行时开始遇到此问题。我想你在代码没有优化的时候会感觉到不同,就像我现在写的那样。
  • 我明白了。我也遇到了一些与操作系统相关的问题,并使用 Platform.OS 解决了它们。无论如何,感谢您的快速响应。
  • 当然。没有提及。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
相关资源
最近更新 更多