我正在做我的第一次实习,我正在一个项目中将 RX 代码转换为 LiveData。在某些时候,我不得不在某些存储库中用 observeForever() + Globalscope(Dispatchers.Main) 替换 subscribe() 函数,但显然使用 observeForever() 并不是最好的做法,我的实习导师建议我使用 Transformations.map () 反而 。
我不确定如何在以下代码(在存储库中)中使用 map() 而不是 observeForever:
//I am using Globalscope with Dispathers.Main otherwise I get "cannot observeForever in a background Thread error
GlobalScope.launch(Dispatchers.Main){
someBooleanLiveData.observeForever {
if (it) {
// DO SOMETHING
} else {
// DO SOMETHING ELSE
}
}
}
我从 Transformations.map() 函数中了解到的是,它用于映射给定 LiveData 对象的值,就像ReactiveX的Map 运算符一样
我试过了,但似乎没有做我想做的事:
Transformations.map(someBooleanLiveData){
if (it) {
// DO SOMETHING
} else {
// DO SOMETHING ELSE
}
}
我的问题是我应该如何使用 Transformation.map() 来避免 observeForever ?
做某事:如果你需要一个例子,可能是一个 livedataObject.postValue(it)
提前感谢您的回复。