Что произойдет если не отписаться от LiveData подписка на которую была с помощью observeForever

«Что произойдет если не отписаться от LiveData подписка на которую была с помощью observeForever» — вопрос из категории Архитектура, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Неотписка от LiveData с observeForever может привести к утечке памяти, так как LiveData хранит сильную ссылку на Observer. Это особенно критично, если Observer ссылается на Activity/Fragment, которые не будут собраны GC. Также возможны ненужные обновления UI у уже уничтоженных компонентов.

Пример:

val liveData = MutableLiveData<String>()
liveData.observeForever { value ->
    // Этот observer останется в памяти
    textView.text = value // Может вызвать crash если textView уже уничтожен
}

Решение: всегда отписываться в onDestroy() или когда observer больше не нужен:

override fun onDestroy() {
    super.onDestroy()
    liveData.removeObserver(observer)
}