React Native GIF-файлы с очень низкой производительностью

#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)