не совсем в этом разбираюсь, но mainView не забываете тоже обнулять?
Можете пожалуйста еще подсказать, нормально ли такое объявление адаптера
нормальное
Если в активити - да. Если во фрагменте - абсолютно нет.
У меня он находится во фрагменте. А как его можно заменить? Простая инициализация в методах жц?
// Объявление private var listAdapter: GameListAdapter? = null // где-нибудь в onViewCreated(), т.е. обязательно после onCreateView() listAdapter = GameListAdapter(this) // onDestroyView() listAdapter = null
спасибо большое еще раз!
Почему во фрагменте абсолютно нет?
Пожалуйста. Адаптеры, листенеры обязательно зануляйте всегда в onDestroyView(), иначе однажды проблемы будут
Утечки памяти
понял
А куда она утечет?
Не знаю, в преисподнюю может :) А если серьезно, то при пересоздании фрагмента могут иногда(или всегда, не уверен) оставаться старые объекты в памяти. LeakCanary помог мне это понять. Однако, если пересоздание нафиг не нужно, то можно и оставить lazy
Судя по всему я не один такой
В плане обнуления?)
У тебя есть описание конкретного случая, при котором наблюдаются проблемы утечки?
Я отслеживал с помощью LeakCanary. При пересоздании объекты плавали в памяти и garbage collector не мог их уничтожить.
*У тебя есть описание конкретного случая?* : )
Что для тебя конкретный случай?) Ладно, попробую. Я использую Navigation Component. При возврате в предыдущие фрагменты adapter остается в памяти до полного уничтожения активити. А если вы про замеченные лично мною(без LeakCanary), то просто рандомная неадекватная работа recyclerview, вылеты из-за listeners.
Я имел в виду возможность накидать тестовый проект по этому описанию, в котором точно будет течь. Чтобы потом посмотреть что там не так пошло
Как воспроизвести рандомную неадекватную работу recyclerview я не знаю точно. Но если хотите убедиться, что старый адаптер в памяти висит, то достаточно простого проекта с NavigationComponent + включенный LeakCanary.
У меня начинают вылезать смутные подозрения, потому что никогда на подобные проблемы не натыкался, но — никогда не пользовался NavigationComponent
Я пока не пользовался Navigation Component тоже горя не знал) Теперь же много интересного выясняется. Кстати, про проблемы с адаптером и необходимостью зануления где-то статейку видел, если найду, то скину.
Обсуждают сегодня