Livedata с Viewpager2-Fragments

Я хочу обновить свой старый проект Android и использовать рекомендуемый способ Google с ViewModel и Livedata. Я использую Viewpager2 и Tablayout с 4-мя фрагментами. Первый фрагмент имеет ViewModel и наблюдает за изменениями данных через Livedata и обновляет его пользовательский интерфейс.

Мои вопросы:

  1. Что происходит, когда я перехожу ко второму фрагменту в окне просмотра? Первый фрагмент больше не виден, но он все еще есть. Меняется ли жизненный цикл фрагмента 1, когда он не виден? А если нет, как я могу прекратить его обновлять, потому что он все равно будет получать уведомления об обновлениях.

  2. Могу ли я использовать одну и ту же ViewModel для всех 4 фрагментов, потому что они просто по-другому визуализируют изменения данных в Livedata. Как я могу это сделать?

Спасибо!




Ответы (1)


Хорошо, после некоторого тестирования я нашел ответ.

  1. Жизненный цикл первого фрагмента меняется на паузу при переходе ко второму фрагменту и обратно на возобновление при перемещении назад. Вы можете использовать эти события и установить bool var для обновления пользовательского интерфейса или нет.

  2. Вы можете использовать одну и ту же ViewModel для всех фрагментов. Только нужно обратить внимание на то, чтобы не обновлять, когда фрагмент не виден. В моем случае вы можете использовать жизненный цикл приложения.

person Sam    schedule 09.01.2020
comment
Привет :) Как вы сделали, чтобы у всех фрагментов была одна и та же модель просмотра? :) - person aeroxr1; 20.06.2020
comment
@ aeroxr1 Вы можете сделать это так, например, blog.mindorks.com / - person Sam; 01.12.2020
comment
Или здесь: developer.android.com/topic/libraries/architecture/ - person Sam; 01.12.2020