Могут ли множественные вызовы setupWithViewPager привести к утечкам памяти?

Я хочу TabLayout (из библиотеки дизайна) для заполнения запросом Firebase.

Я установил (пейджинговый) адаптер (состояния), который правильно обрабатывает добавление и удаление страниц на лету (обратные вызовы Firebase onChild{Added,Removed}()). Нет утилизации, но это работает.

Расположение вкладок соединено с адаптером пейджера с помощью setupWithViewPager(), Этот вызов работает нормально, когда неизменный адаптер пейджера уже заполнен.

Но когда адаптер пейджера используется в режиме реального времени (запрос Firebase), он не распространяет свои изменения в макет вкладки, если я не позвоню setupWithViewPager() каждый раз, когда я звоню notifyDataSetChanged(),

Отсюда мой вопрос, могут ли множественные вызовы setupWithViewPager привести к утечкам памяти?

Что удивительно, так это то, что невозможно отменить предыдущий вызов setupWithViewPager() (setupWithViewPager(null) не допускается).

Спасибо за понимание.

0 ответов

Вы можете попробовать в onDestroy или что-то еще, что подходит для этого, например:

viewPager.clearOnPageChangeListeners()

И тогда он не будет содержать ссылок на слушателей, которые setupWithViewPager добавлен, и поэтому вы можете вызывать его несколько раз без утечки памяти.

Как вы думаете?

Другие вопросы по тегам