Tar*_*ury 3 android android-livedata
阅读此处LiveData找到的文档,我遇到了这一部分:
如果生命周期变为非活动状态,它将在再次变为活动状态时接收最新数据。例如,位于后台的 Activity 在返回前台后立即接收最新数据。
当我创建一个空白项目来测试它时,我发现来自后台的最新数据不会被发送。
示例代码来自onCreate():
viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
button.setOnClickListener {
viewModel.buttonClicked()
}
viewModel.textLiveData.observe(this, Observer {
textview.text = it
Log.d("TEST", "new data = $it")
})
Run Code Online (Sandbox Code Playgroud)
当进入后台并返回时,是否应该将其LiveData持有的最新数据再次发送给观察者?
更新:
根据要求的 ViewModel 代码:
class MyViewModel : ViewModel() {
val textLiveData = MutableLiveData<String>()
fun buttonClicked() {
textLiveData.value = "new text value"
}
}
Run Code Online (Sandbox Code Playgroud)
因此,经过大量调查后,我将使用两个场景来分享我的答案,以便更容易掌握
场景一:
Observer接收最新数据更改LiveData LiveData不会调度该值,因为Observer已经消耗/具有最新的更改。场景2:
LiveDataObserver处于活动状态,LiveData因此还不会调度值更改。Observer再次处于活动状态时,LiveData会分派自更改以来的最新值| 归档时间: |
|
| 查看次数: |
1662 次 |
| 最近记录: |