theme: apple-basic
layout: intro
highlighter: shiki
lineNumbers: true
LiveData is a data holder class that can be observed within a given lifecycle.
This class is designed to hold individual data fields of ViewModel, but can also be used for sharing data between different modules in your application in a decoupled fashion.
private val observableString = ObservableField<String>("Default value")
observableString.addOnPropertyChangedCallback(object : Observable.OnPropertyChangedCallback() {
override fun onPropertyChanged(sender: Observable?, propertyId: Int) {
//Do something
}
})
private val observableString = MutableLiveData<String>("Default value")
observableString.observe(lifecycleOwner, Observer {
//Do something
})
STARTED 혹은 RESUMED 로 활성화 상태일 때만 observe를 수행UI와 데이터 상태의 일치 보장
메모리 누수 없음
중지된 활동으로 인한 비정상 종료 없음
수명 주기를 더 이상 수동으로 처리하지 않음
최신 데이터 유지
적절한 구성 변경
리소스 공유
val userLiveData = ...
val userNameLiveData: LiveData<String> = Transformations.map(userLiveData) { user ->
user.firstName + user.lastName
}
val nameQueryLiveData = ...
val nameQueryLiveData: LiveData<User> = Transformations.switchMap(nameQueryLiveData) { name ->
myDataSource.getUsersWithNameLiveData(name)
}
fun setNameQuery(name: String) {
nameQueryLiveData.setValue(name);
}