-
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 는 onActive 와 onInactive 함수가 있어서 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
끝
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] ViewModel & LiveData 의 pattern & anti-pattern (0) | 2021.01.22 |
---|---|
[android] ViewModel 에 대해 알아보자 (0) | 2021.01.21 |
#5 모바일 앱 보안 강화 - 안드로이드 모바일 앱 모의해킹 (0) | 2020.11.23 |
#4 앱 자동 분석 시스템 - 안드로이드 모바일 앱 모의해킹 (0) | 2020.11.22 |
#3 취약점 항목별 상세 실습 part 2. - 안드로이드 모바일 앱 모의해킹 (3) | 2020.11.21 |
댓글