基本的本机应用程序中的高内存消耗

时间:2018-09-05 11:43:18

标签: javascript reactjs react-native

我正在使自己的第一个反应本机化,尽管我会尽可能地容易,但事实证明,要理解我可能在做错的事情对我来说很难。

首先,我有一个非常简单的应用程序,可通过redux提取数据

componentWillMount() {

    this.props.fetchCoin()
    this.props.CurrencyRate()
  }

然后在其返回部分呈现

 return (
     <ScrollView>
                 <Header />
                 {/* Custom Search Input */}
                 <View>
                 <TextInput
                  style={textInput}
                  placeholder="Search Coin"
                  onChangeText={(text) => this.onSearch(text)} />
                  </View>
                  <View>
                  <FlatList
                   data={this.state.searchCoin ? displaySearchCrypto : this.props.cryptoLoaded}
                   renderItem={({ item }) => (
                   <CoinCard
                      key={item["long"]}
                      coinShortName = {item["short"]}
                      coinName = {item["long"]}
                      coinPrice = {item["price"].toFixed(2)}
                      marketCap = {(item["mktcap"]/1000000000).toFixed(4)}
                      percentChange = {item["perc"].toFixed(2)}
                      vwapData={item["vwapData"].toFixed(2)}
                      coinImage={"https://coincap.io/images/coins/" + item["long"] + ".png"}
                      />
                  )}
          />
          </View>
               </ScrollView>
           )
      }
    }
  

我发现我的ram消耗甚至超过500 MB   该应用程序已提取数据并将UI线程固定为60(fps),其中我   认为用户界面什么都没发生

而不是共享我的所有代码:您可以在github上找到大部分内容 上面的代码段代码是从这里共享的:https://github.com/irohitb/Crypto/blob/master/src/container/cryptoContainer.js

以上代码中的CoinCard组件可在此处查看:https://github.com/irohitb/Crypto/blob/master/src/components/CoinCard.js

与此相同的操作在这里:https://github.com/irohitb/Crypto/blob/master/src/actions/cryptoAction.js

[问题:] 能否有人帮助我找出我在做错什么以及如何解决?如果有人想要This repositorytry it out应该可以在您的模拟器上正常运行而不会引发错误。 enter image description here

1 个答案:

答案 0 :(得分:2)

带有FlatList

Image在Android上有一个未解决的问题:https://github.com/facebook/react-native/issues/13413。这里有一些有关性能的提示:https://github.com/filipemerker/flatlist-performance-tips/

尽管要进行权衡取舍,但还是要尝试将removeClippedSubviews添加到您的FlatList中,这是第一次解决。

我还在屏幕截图中指出,您收到有关丢失键的警告。解决该问题,然后尝试keyExtractor,看看是否可以解决问题。

或者,使用FlatList以外的其他名称,例如ScrollView。您将失去FlatList的某些功能,但是如果获得可接受的内存使用率和性能,那是值得的。