반응형
출처 - https://tourspace.tistory.com/26?category=788397
정의 및 기능
API 특징
Public method
Return Type |
Method Description |
T |
getValue() 현재값을 반환, Background thread에서 호출하면 마지막 set된값을 받는다고 보장할 수 없다. |
boolean |
Active 상태의 observer가 있으면 true, 아니면 false |
boolean |
LiveData가 observer를 한개라도 가지고 있다면 true |
void |
observe(LifecycleOwner owner, Observer observer) Lifecycle에 따라 동작하는 observer를 등록한다. main thread에서 호출하며, 이미 등록된 observer라면 observer 내용이 실행됨.STARTED, RESUMED의 active 상태에서만 observer가 이벤트를 수신할 수 있고 DESTROYED상태로 이동하면 observer가 자동으로 제거됨. inActive 상태에서는 데이터를 수신받을수 없으나, 다시 Active상태로 진입시 자동으로 데이터가 수신됨. DESTORYED가 되기 전까지 LiveData와 owner, observer는 강한참조를 갖으나 DESTORYED되면 참조가 모두 제거됨. 등록시 이미 owner가 DESTROY 상태라면 무시된다. 같은 owner,observer 조합이 등록 요청되면 무시되며, 이미 등록된 observer가 다른 owner와 함께 등록 요청을 받는경우 IllegalArgumentException 발생. |
void |
observeForever(Observer observer) owner 없이 등록하며, 이는 owner가 항상 active 상태인것처럼 동작한다. 따라서 모든 이벤트를 수신할 수 있으며, 자동으로 해제되지 않기때문에 명시적으로 removeObserver()를 불러줘야 한다.만약 observer가 다른 owner와 함께 이미 등록된 상태라면 IllegalArgumentException을 발생 시킨다 |
void |
removeObserver(Observer observer) 넘겨받은 observer를 list에서 해제한다. |
void |
removeObservers(LifecycleOwner owner) 넘겨받은 owner와 함께 등록된 observer를 제거한다 |
Protected methods
Return Type |
Method Description |
void |
onActive() active observer의 개수가 0 -> 1로 변경될때.따라서 이때 데이터를 실시간으로 업데이트를 시작해야 한다. |
void |
active observer의 개수가 1 -> 0로 변경될때. observer가 전부 remove되거나 active 상태의 observer가 없을때 |
void |
postValue(T value) background thread에서 호출하는 경우 main thread에 값을 set하라고 post 시킨다. setValue()와 동시에 불리면 postValue 값이 나중에 처리되어 최신값이 될 수 있다. |
void |
setValue(T value) main thread에서 호출하여 값을 set 시킨다. 등록된 active observer들에게 바로 전달된다 |
반응형
'개발 > 안드로이드' 카테고리의 다른 글
Android ConstraintLayout (0) | 2019.05.31 |
---|---|
Android Architecture Components - ViewModel (0) | 2019.05.29 |
Android Architecture Components - Handling Lifecycles (0) | 2019.05.28 |
Android Architecture Components - Room (0) | 2019.05.28 |
ROOM 라이브러리 사용하기 , 코루틴 (0) | 2019.05.27 |
댓글