[Android] [Jetpack] LiveData - YunByungKwan/Fundamental GitHub Wiki
LiveData에 대해 설명
LiveData는 데이터를 저장하고 변화를 관찰할 수 있는 Observable data holder 클래스입니다. LiveData는 파라미터로 lifecycleower와 observer를 받습니다. 그래서 lifecyclerowner의 상태가 STARTED나 RESUMED 상태인 경우에만 데이터의 변경 사항을 observer에게 알립니다. LiveData는 setValue/postValue 함수가 있는데 protected 함수들이다 보니 보통 LiveData를 상속한 MutableLiveData로 값을 설정하고 이를 LiveData에 맵핑해서 변화를 옵저버에게 알립니다.
LiveData의 setValue와 postValue의 차이점에 대해서 설명
setValue() 함수는 LiveData의 값을 설정하는 함수입니다. Main Thread에서만 실행이 되어야 하고, background thread에서 사용하면 exception이 발생합니다. postValue() 함수는 파라미터로 받은 값을 설정하고 그 값을 포함한 runnable 객체를 main thread로 보내서 값을 설정합니다. 두 함수는 모두 protected 함수여서 LiveData의 setValue/postValue를 직접 호출하는 건 불가능하고 보통 LiveData를 상속하는 MutableLiveData에서 setValue/postValue를 사용합니다.
[참고]
-
LiveData는 추상 클래스임
public abstract class LiveData<T> { ... }
-
LiveData의 setValue()와 postValue()는 protected이다.
protected void setValue(T value) { ... } protected void postValue(T value) { ... }