LiveData

데이터 홀더 클래스

LiveData

LiveData


데이터의 변경에 대한 이벤트를 받을 수 있는 데이터 홀더 클래스로, 안드로이드의 생명주기를 인식한다.

LifeCycleOwner

액티비티, 프래그먼트의 생명주기를 분리하여 담은 객체로, LiveDataLifeCycleOwner 를 설정하여 뷰와 생명주기를 같이 할 수 있게 된다.

ObservableField 와의 차이

LiveData 는 생명주기에 따라 자동으로 구독을 해제했다가 사용될 때 다시 구독하는 반면에, ObservableFieldremoveOnPropertyChangedCallback() 함수를 호출해서 직접 구독을 해제 해야 한다.


LiveData 의 동작


LiveData 에 값을 할당하는 방법은 setValue(), postValue() 2가지 방식이 존재한다.

setValue()

메인 스레드(UI) 에서 실행되어 즉시 값이 반영된다.

postValue()

백그라운드 스레드에서 실행되어 메인 스레드에 값을 post 하는 방식으로 동작한다.

postValue() 로 값을 할당한 후에 getValue() 로 값을 읽으려고 하면 변경된 값을 읽지 못할 가능성이 높은데, Handler 를 통해 메인 스레드에 값이 전달되기 전에 getValue() 를 호출하기 때문이다.

따라서 메인 스레드에 값이 반영되기 전에는 postValue() 를 여러 번 호출하더라도 모든 값이 즉시 반영되지 않는다.

essential