Ответ
Неотписка от 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)
}