android - LiveData 和 Coroutines - 属性必须被初始化或抽象
问题描述
我正在尝试在 MVVM 中同时使用 LiveData 和 Coroutines,我可能会遗漏一些简单的东西。
class WeatherViewModel (
private val weatherRepository: ForecastRepository
) : ViewModel() {
var weather: LiveData<Weather>;
/**
* Cancel all coroutines when the ViewModel is cleared.
*/
@ExperimentalCoroutinesApi
override fun onCleared() {
super.onCleared()
viewModelScope.cancel()
}
init {
viewModelScope.launch {
weather = weatherRepository.getWeather()
}
}
}
但我正在Property must be initialized or be abstract
分配weather
ininit
函数。我假设是这种情况,因为我正在使用 coroutines viewModelScope.launch
。
override suspend fun getWeather(): LiveData<Weather> {
return withContext(IO){
initWeatherData()
return@withContext weatherDao.getWeather()
}
}
我该如何解决?
解决方案
推荐阅读
- reactjs - 异步不显示结果
- javascript - 如何调用对象中的方法
- javascript - 文件加载器似乎不适用于标签
- php - 如何在 TYPO3 v9 单元测试中模拟、使用或覆盖 Environment::isCli()
- javascript - 通过单个 google 分析属性跟踪未定义的通配符子域
- c++ - 如何复制多态对象
- neo4j - 获取配置文件计划每个部分的执行时间
- wpf - 如何让 WPF DataGrid 列绑定到枚举?
- azure - 如何在 Windows server 2019 上使用 DSC powershell 配置和安装 nano 服务器
- microsoft-graph-api - 如何创建传播到与会者副本的 openType 扩展?