Хорошая практика для реализации viewmodel - PullRequest
0 голосов
/ 24 сентября 2018

Кто-нибудь знает хорошую практику для реализации логики viewmodel?Событие или действие?

class EventBasedVM : ViewModel() {
    fun onResume() {
        fetchInformation1()
        fetchInformation2()
    }
}

class ActionBasedVM : ViewModel() {
    fun fetchInformation1() {
    }

    fun fetchInformation2() {
    }
}

1 Ответ

0 голосов
/ 24 сентября 2018

Хотя оба упомянутых вами подхода имеют смысл для конкретных случаев использования, я бы добавил еще один в список:

 class InitialisationBasedVM : ViewModel() {

    val informationLiveData = MutableLiveData<String>()

    init {
        fetchInformation()
    }

    private fun fetchInformation() {
        // call you async code and eventually post the value to the observers
        informationLiveData.postValue("whatever")
    }
}

Метод извлечения данных в конструкторе ViewModel гарантирует, что данные не извлекаютсяснова в случае изменения конфигурации.Вы также можете сделать метод fetchInformation() общедоступным и вызывать из View определенные действия, требующие перезагрузки данных (например, pull для обновления).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...