JetPack와 MVVM 패턴을 공부하게 되면 LiveData가 정말 많이 나오는 것을 확인 할 수 있다. 오늘은 이 친구에 대해서 삿삿히 살펴보려고 한다!
class LoadDetailViewModel : ViewModel() {
private val _liveData = MutableLiveData<String>()
val liveData: LiveData<String>
get() = _liveData
fun loadData() = viewModelScope.launch {
_liveData.setValue("value1")
_liveData.postValue("value2")
}
}
❓ 왜 LiveData는 최신의 데이터를 유지해야하는데 Write만 가능할 필요가 있을까?
View와 ViewModel을 완전히 나누어 역할을 구분하기 위해서 위와 같이 나누었다. ViewModel에서는 항상 최신의 데이터를 유지하기 위해 LiveData를 업데이트하지만 View는 ViewModel의 데이터 변화를 인지하고 UI로 보여주는 역할을 합니다.
❓ LiveData를 사용하면 안되는 경우
- Repository에서 데이터를 가져올 때 LiveData를 사용하는 경우
- UI 업데이터 목적으로 사용되지 않는 LiveData를 사용하는 경우
-> 메인 스레드로 값을 처리하기 때문에 목적에 맞지 않는다.