#javascript #react-native #performance #expo #react-navigation
#javascript #react-native #Производительность #выставка #react-навигация
Вопрос:
Я рендерю 30 GIF-файлов в режиме прокрутки (не в плоском списке, потому что я реализовал макет Masonry), используя компонент изображения из «react-native», а потребление памяти составляет от 130 МБ до 500 МБ…
Поскольку я использую react-navigation и отображаю GIF-файлы на экране стека mode="modal"
, я добавил опцию screen: detachPreviousScreen={true}
но, когда я возвращаюсь с этого экрана стека (закрываю его), объем оперативной памяти по-прежнему составляет 500 МБ.
Кроме того, когда я перевожу приложение в фоновый режим (например, переключаюсь на другое приложение) и снова открываю его, объем оперативной памяти возвращается к исходному значению 130… (кажется, что потребление памяти GIF-файлов освобождается)
Кто-нибудь знает, как решить эту проблему?
Я также тестировал с помощью react-native-screens enableScreens (), но по некоторым причинам приложения не отображаются после того, как я обновил свой EXPO SDK до версии 40 (он работал на предыдущих SDK)
Ответ №1:
Хорошо, проблема, с которой я столкнулся, заключалась в том, что я не использовал GIF, который появляется в теле «preview_gif», в ответе JSON от API, размер которого меньше.
Кроме того, с компонентом изображения RN по умолчанию загрузка немного замедляется, поэтому мне пришлось использовать свой собственный оптимизированный компонент изображения. (Другое решение — использовать react-native-fast-image)