【发布时间】:2018-10-24 17:51:33
【问题描述】:
我有一个适用于 iOS 和 Android 的聊天应用程序 - 带有消息列表和输入字段的基本布局,用于键入和发送消息。在输入了几十条消息后,打字变得非常慢。列表滚动仍然很流畅。
我检查了 iOS 内存工具,它报告说我没有内存泄漏。在 Android systrace 上,它显示deliverInputEvent 占用了 300 毫秒。
我如何弄清楚是什么让deliverInputEvent 花了这么长时间?
【问题讨论】:
-
也许您可以分享一些您在 TextInput.onChangeText 中所做的代码...
-
onInputTextChanged = text => { this.setState({ text }); this.updateUserTagDebounced(); }主要是设置状态。 debounced 函数是异步的,但即使删除它,问题仍然存在。 -
只是验证一下,如果你注释掉 setState 行,问题就消失了吗? setState 导致组件重新渲染。所以也许有很多不需要重新渲染的东西重新渲染?也许尝试在 shouldComponentUpdate() 中添加一个过滤器...
-
还没试过。如果我没有 setState 则输入字段不会更新,因为我使用它来更新文本输入值。重新渲染会减慢 DeliverInputEvent 方法吗?我认为缓慢的重新渲染会显示在 Android systrace 中。
标签: android ios performance react-native performance-testing