Хотя оба упомянутых вами подхода имеют смысл для конкретных случаев использования, я бы добавил еще один в список:
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 для обновления).