我正在构建我的第一个反应原生ios应用程序。此应用程序的主要功能是向服务器发出请求,获取数据并在FlatList
中呈现该数据。在初始加载时,将呈现FlatList
内的15个列表项,当用户向下滚动时,每次用户到达列表底部时,都会添加15个列表项。呈现的列表项总数为500。
我一直在使用Instruments分析我的应用程序,虽然看起来没有内存泄漏,但该应用程序正在使用大量内存来呈现列表。
在下面的图片中,您可以看到分配总数(超过300万),以及总字节数和持久字节数。下面的监控只持续了一分多钟,您在图表中看到的每一步都是当用户到达列表底部时,加载了更多数据。
在1分钟内,使用的内存超过700MiB,178MiB持久存在。对于简单的FlatList
,这似乎很高。我误解了什么吗?
以下是render()
的{{1}}方法:
FlatList
我不确定是什么导致如此高的内存使用率。我使用redux和redux-persist来存储和改变数据,但最不敏感的功能是向服务器发出请求。有谁知道如何减少或修复这种大量内存消耗?
答案 0 :(得分:0)
我遇到了一个场景,我应该渲染超过5000行。 我使用https://github.com/Flipkart/recyclerlistview处理此问题 你需要在后台应用背景提取的逻辑,比如从网上获取前100行,你需要在后台获取下一批,即100行数据,滚动到80行。
onScroll={({nativeEvent}) => {
this.lastScrollPosition = nativeEvent.contentOffset.y;
const isToLoadNextBatch = this.currentScrollPosition(nativeEvent);
this.onScrollPosition(isToLoadNextBatch);
}}