【发布时间】:2020-07-22 20:36:09
【问题描述】:
当我从 Fragment A 观察我的视图模型中的一个变量时
val fetchTopicsList = liveData(Dispatchers.IO) {
emit(Resource.Loading())
try {
emit(repo.getIdeas())
}catch (e:Exception){
emit(Resource.Failure(e))
}
}
然后我导航到 Fragment B 并返回 Fragment A,观察者将再次触发,但不会获取新数据。
现在,如果我将该声明更改为函数声明
fun fetchTopicsList() = liveData(Dispatchers.IO) {
emit(Resource.Loading())
try {
emit(repo.getIdeas())
}catch (e:Exception){
emit(Resource.Failure(e))
}
}
当我做同样的事情时(从片段 A 到片段 B 并返回),观察者将再次触发并再次从服务器中提取数据。
为什么函数会再次触发而变量只保留第一个获取的数据?
【问题讨论】:
标签: android kotlin mvvm viewmodel android-architecture-components