Могут ли множественные вызовы setupWithViewPager привести к утечкам памяти?
Я хочу TabLayout
(из библиотеки дизайна) для заполнения запросом Firebase.
Я установил (пейджинговый) адаптер (состояния), который правильно обрабатывает добавление и удаление страниц на лету (обратные вызовы Firebase onChild{Added,Removed}()
). Нет утилизации, но это работает.
Расположение вкладок соединено с адаптером пейджера с помощью setupWithViewPager()
, Этот вызов работает нормально, когда неизменный адаптер пейджера уже заполнен.
Но когда адаптер пейджера используется в режиме реального времени (запрос Firebase), он не распространяет свои изменения в макет вкладки, если я не позвоню setupWithViewPager()
каждый раз, когда я звоню notifyDataSetChanged()
,
Отсюда мой вопрос, могут ли множественные вызовы setupWithViewPager привести к утечкам памяти?
Что удивительно, так это то, что невозможно отменить предыдущий вызов setupWithViewPager()
(setupWithViewPager(null)
не допускается).
Спасибо за понимание.
0 ответов
Вы можете попробовать в onDestroy
или что-то еще, что подходит для этого, например:
viewPager.clearOnPageChangeListeners()
И тогда он не будет содержать ссылок на слушателей, которые setupWithViewPager
добавлен, и поэтому вы можете вызывать его несколько раз без утечки памяти.
Как вы думаете?