Особенности при подписке на LiveData во Fragment

Метод observe() класса LiveData принимает в качестве аргумента объект класса LifecycleOwner. Данный объект будет указывать, кто является владельцем данного Lifecycle, это необходимо чтобы колбек LifeData.observe() не триггерился когда LifecycleOwner еще не в активном состоянии (либо уже был вызван onDestory(), либо еще не был вызван onCreate() например).

Во фрагментах лучшим решением будет передавать viewLifecycleOwner, если при изменении данных в LifeData необходимо будет изменять UI. Таким образом вы будете уверены, что обновление данных на экране будет происходить когда View уже создан.

Если же UI обновлять не надо, а надо просто сохранить какую-либо информацию (например когда используется общая ViewModel для нескольких фрагментов и ViewModel нужна просто как средство коммуникации между фрагментами), то в таком случае можно использовать this, так как фрагменты реализуют интерфейс LifecycleOwner

Поделиться уроком

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *