Fragment
реализует интерфейс LifecycleOwner
, поэтому в метод LiveData.observe()
первым параметром можно передавать this
, также как в Activity. Но жизненный цикл View отличается от жизненного цикла фрагмента. Ивент из LiveData может прийти после вызова метода
onDestroyView()
. В этом случае View фрагмента занулится, и при попытке обновления UI будет брошен NullPointerException
.Поэтому рекомендуется использовать метод getViewLifecycleOwner(), который возвращает объект LifecycleOwner, ассоциированный с жизненным циклом View.
В этом случае подписываться необходимо в методе
onCreateView()
, а после вызова onDestroyView()
подписчик перейдет в состояние DESTROYED
и автоматически отпишется от обновлений LiveData.