Я делаю приложение для Android с несколькими фрагментами, действиями и несколькими Recyclerviews, а также изображениями, которые загружаются в режиме recycler из базы firebase с помощью glide. Моя проблема в том, что мое приложение очень отстает. Когда я использовал профилировщик для отслеживания потребления памяти приложением, потребление памяти моим приложением стало слишком большим. (скажем, мое приложение занимает 60 МБ сначала 2 секунды, затем 100, 200, 350, .... до этого выглядит 2 ГБ памяти). Я знаю, что это потенциальная утечка памяти. Но я не знаю, как это исправить. Пожалуйста, помогите мне решить эту проблему.
Заранее спасибо!
Первый подход - профилировать ваше приложение из Android Studio (кнопка профиля «приложение» -> выберите ПАМЯТЬ из раскрывающегося списка -> дважды щелкните, чтобы развернуть -> и проверьте свои распределения.
Какой компонент нагружает кучу?
Также существует LeakCanary, который сделает эту работу за вас: https://github.com/square/leakcanary
Хорошо, спасибо! У меня проблемы с памятью при переключении между фрагментами. поэтому предложите мне хороший способ использовать несколько фрагментов (например, на домашней странице Instagram)
Общая концепция экономии памяти заключается в том, чтобы хранить в памяти только используемые фрагменты / компоненты. Например, если вы используете ViewPager, вы можете переключиться на FragmentStatePagerAdapter вместо FragmentPagerAdapter. Другой способ - повторно использовать макеты, которые уже находятся в кеше пользовательского интерфейса. Это зависит от вашей реализации. Если ничего не работает, вам придется переосмыслить свою архитектуру. Немного полезной информации: developer.android.com/training/improving-layouts
собственно сегодня я нашел одну вещь. Утечка памяти происходит в Android 6.0, но не в 7.0 и выше. В чем может быть причина?
Хммм, извините, но это слишком широко. Если вы используете какие-либо внешние библиотеки, убедитесь, что у них нет известных проблем (github) с разными версиями Android. Но проведите дополнительное тестирование, убедитесь, что оно не было случайным, возможно, в Android 7 улучшено управление памятью, которое скрывает проблему.
Добавьте код, как вы загрузили изображение в recylerviews?