Я следую шаблону MVVM в своем приложении для Android. Вот файлы, о которых я буду говорить:
PresentContestsFragment
PresentContestsViewModel
вот мой код модели представления:
private val _contests = MutableLiveData<List<ContestsShortInfoModel>>()
val contests:LiveData<List<ContestsShortInfoModel>>
get() = _contests
fun getContests() {
viewModelScope.launch{
val contestLiveData = repository.getLiveContests()
contestLiveData.observeForever {
_contests.value = it
}
}
}
Вот мой код класса фрагмента
В onActivityCreated я вызываю viewModel.getContests(), а затем bindUI()
private fun bindUI() {
viewModel.contests.observe(this, Observer { list ->
list?.let{
// show this list in UI
}
})
}
все работает хорошо, и мой пользовательский интерфейс обновляется. Я хочу спросить, можно ли вызывать наблюдениеForever в модели представления. Если нет, то как мне удалить наблюдателя?
Если у вас есть лучший способ сделать это, пожалуйста, сообщите и об этом.
Помните, что когда я вызываю getLiveContests репозитория, а затем в репозитории, я проверяю, нужно ли получать свежие данные из Интернета или нет. в любом случае, я возвращаю LiveData из комнаты db. Если новые данные были получены, они сохраняются в комнате, и поскольку я вернул LiveData, я также получаю обновления в пользовательском интерфейсе.