学会了ViewModel,接下来就是建立观察 LiveData。
LiveData
是一个 observable data holder class 类别。
LiveData 仅在数据更改时才提供更新,并且仅向活动的观察者提供更新,并配合观察者的生命周期。
建议是配合ViewModel一起使用。
LiveData优点:
1.确保您的 UI 与您的数据状态匹配 (LiveDataObserver在底层数据发生变化时通知 对象)
2.没有内存泄漏 (观察者绑定到 Lifecycle对象并在其关联的生命周期)
3.不会因活动停止而崩溃(观察者的生命周期处於非活动状态,不会收到任何 LiveData 事件)
4.不再需要手动生命周期处理(LiveData 会自动管理)
5.始终保持最新数据(生命周期改变会在再次接收最新数据)
6.正确的配置更改(例如设备旋转)
7.共享资源(使用单例模式扩展对象来包装系统服务)
开始动手吧
在App build.gradle,加元件库
dependencies {
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1"
}
在ViewModel中,建立LiveData
// Create a LiveData with a Type
var mTitle = MutableLiveData<String>()
在Activity中,Observe LiveDtat
viewModel.mTitle.observe(owner:this){ it:String
dayTitle.text = it
}
在ViewModel中,LiveData更新
mTitle.postValue("Kotlin Android 第17天,从 0 到 ML -- LiveData")
** 可使用setValue(T) 和 postValue(T).
** setValue(T)是执行在 Main Thread (UI)
** postValue(T) 是执行在 Worker Thread (Backgroud)
范例:
Activity 原本显示"Kotlin Android 30天,从 0 到 ML" ,LiveData Delay 1s ,
更新"Kotlin Android 第17天,从 0 到 ML -- LiveData",Activity收到更新文字就更新显示内容
执行结果:
https://developer.android.com/topic/libraries/architecture/livedata
>>: Day 8 - [Zenbo开发系列] 05-DDE回覆规则设计
前言 Repository 设计模式主要是要分离商业逻辑与资料存取的逻辑,希望开发者专注在商业逻辑的...
好的 经过了一番风起云涌 惊滔骇浪之後(? 第一篇文章总算是生出来了 原本预估是8号就该开始开赛了 ...
一. 介绍 Bert全名为Bidirectional Encoder Representation ...
在某个我辅导过的团队,我曾观察到一个现象: RD 在评估工作时数,总是会估出不合理的长时间。是 RD...
D3js Diagram常见的两点浪漫路径 用途 在绘制diagram图表时,会用到的垂直水平连线,...