我像这样测试LiveData
。
// MainActivity.kt
class MainActivity : AppCompatActivity() {
val testViewModel: TestViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
testViewModel.testLiveData.value = true
testViewModel.testLiveData.observe(this) {
println("Hello")
}
}
}
// TestViewModel.kt
class TestViewModel : ViewModel(){
val testLiveData = MutableLiveData<Boolean>()
}
我想<代码>(livedata)。观察mean start观察liveData值的变化<我不认为在设置观察者之前改变的值是不可观察的
但是,它会打印你好
我对实时数据观察者有误解吗?
当你开始观察LiveData时,如果LiveData已经有了一个值,它会立即将该值重放给观察者。这是设计好的,因为LiveData通常处于比视图寿命更长的ViewModel中。例如,当屏幕旋转时,所有的视图都被重新创建,观察再次开始。所有的视图都将用LiveData的最新值更新。如果它不这样做,那么当屏幕旋转并重新创建活动/片段时,它们就会坐在那里,没有什么可观察的,这违背了使用ViewModel来保留比视图寿命更长的状态的目的。
我有一个片段和一个相应的viewmodel类。我在Fragment方法上从DB获取包装为LiveData的联系人列表。它工作得很好,我使用PagedListAdapter显示联系人列表,如下所示: 我在我的片段中添加了一个观察者,如下所示: 有一个按钮在我的片段,它把我带到另一个屏幕,在那个屏幕上我添加更多的联系人到表。但当我从那个屏幕回到我的片段时,观察者并没有被调用。这意味着返回时不会调用方法
我正在处理代码,其中有很多观察者模式实现。所有这些活动的组织方式如下: 观察者要实现的一些接口: 实现注册、注销和通知的类:
我试图在下面的代码中找出,为什么当我用新数据填充数据库时,Room的LiveData observable没有给我新的班次。 这是放在我的activity的onCreate方法上的: 这是populateAdapter方法: 我还有以下填充数据库的代码(我使用RxJava在IO线程上完成这项工作,因为Room需要在主线程之外调用它的代码): 当我开始观察ShiftsViewModel之后调用per
我有一个加载页面,我想在其中对不相关的信息执行两个网络请求(rxjava)。在这两个请求完成之前,我不想进入下一页,即使其中一个或两个都失败了。 > 使用zip将请求绑定在一起。有没有办法不必被迫使用双函数,也不必返回null? 请求A和B有一个。doOnNext和。多恩。如果其中一个返回错误,zip observable是否继续?zip订阅服务器是否也会返回错误? 这是最好的方法吗?
问题内容: 我一直在类设计方面遇到问题,直到我发现了可观察的(使用观察者设计模式),因此使用它创建了一个小型应用程序,从而解决了我的问题。我为使用一个好的原则解决问题感到高兴和自豪。 为什么建议张贴者不要使用可观察的,而要告诉他们使用propertychangelistenr?使用observable是否有任何问题? 问候 问题答案: 观察者和侦听器模式非常相似。但是观察者有一个弱点:所有可观
此外,为什么Viewmodel不能观察到它自己的LiveData的变化?