본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] LiveData 에 대해 알아볼까

by 돼지왕 왕돼지 2021. 1. 20.
반응형


-

LiveData 는 주어진 lifecycle 에 의해 observed 될 수 있는 data holder 이다.

이 말은 LifecycleOwner 와 함께 하는 Observer 라고 보면 된다. 그리고 이 observer 는 감싸고 있는 data 의 변경을 LifecycleOwener 의 상태가 active 상태일 때만 알려준다.



-

LifecycleOwner 는 LifeCycle.State.STARTED 나 LifeCycle.State.RESUMED 일 때만 active 상태이다.

observeForever(Observer) 를 통해 observer 가 추가되면 이 observer 는 항상 active 상태로 여겨지며, 따라서 변경에 대해 항상 notify 를 받을 수 있다.

이 경우에는 수동으로 removeObserver(Observer) 를 호출해주어야 한다.



-

Lifecycle 과 함께 전달된 observer 의 경우에는 Lifecycle 이 LifeCycle.State.DESTROYED 가 되면 자동으로 해지가 된다.

이는 activity 나 fragment 와 함께 동작할 때 아주 유용하다



-

LiveData 는 onActiveonInactive 함수가 있어서 active Observer 들이 0과 1 사이로 변경될 때 notify 받을 수 있다.

이는 LiveData 가 active 한 observer 가 없을 경우 무거운 리소스를 release 할 수 있도록 도와준다.



-

해당 class 는 ViewModel 의 개별 data field 를 hold 하도록 디자인 되었다.

그러나 module 간 decouple 을 위한 data share 하는데도 사용될 수 있다.



-

public method 들은 다음이 있다.

T getValue()

boolean hasActiveObservers() 

boolean hasObservers()

observe(LifecycleOwner, Observer<? super T>)

removeObservers(LifecycleOwner owner)

observerForever(Observer<? super T>)

removeObserver(Observer<? super T> observer)



-

protected method 들은 다음이 있다.

onActive() : active observer 수가 0 -> 1 이 될 때 불린다.

onInactive() : active observer 가 1 -> 0 이 될 때 불린다.

postValue(T) : T value 를 set 하는 것을 main 에서 하도록 post 한다.

setValue(T) : value 를 set 한다



-

참고 자료 : https://developer.android.com/reference/androidx/lifecycle/LiveData





반응형

댓글