728x90
반응형
LiveData
- LiveData는 생명 주기를 인식하는 관찰 가능한 데이터 홀더 클래스이다.
- 데이터가 업데이트될 때 UI가 자동으로 업데이트되도록 LiveData를 사용할 수 있다.
- LiveData는 데이터를 감싸서 가지고 있다.
- LiveData는 생명 주기를 인식하는데 이는 started, resumed 같이 활성 상태에 있는 옵저버만 업데이트를 한다.
LiveData를 추가하기 위해
- ViewModel에 있는 데이터 변수를 LiveData 혹은 MutableLiveData로 변경한다.
MutableLiveData는 값이 변경 가능한 LiveData 객체이다.
MutableLiveData는 제네릭 클래스이기에 어떤 데이터를 가지고 있는지 명시해주어야 한다.
- LiveData가 가지고 있는 데이터 값을 변경하기 위해서는 setValue 메소드를 사용해야 한다.
LiveData를 캡슐화하기 위해
- ViewModel안에 있는 LiveData는 수정 가능해야한다. ViewModel 밖의 LiveData는 읽을 수 있어야한다.
이는 코틀린의 backing property를 사용하여 구현될 수 있다. - 코틀린의 backing property는 getter에서 다른 것을 리턴할 수 있게 해준다.
- LiveData를 캡슐화하기 위해 ViewModel안의 MutableLiveData는 private을 사용해야 하고,
ViewModel외부에는 LiveData backing property를 리턴한다.
관찰 가능한 LiveData(Observable LiveData)
- LiveData는 옵저버 패턴을 따른다.
observable은 LiveData 객체이며 옵저버는 프래그먼트같은 UI controller에 있는 메소드들이다.
LiveData로 감싸진 데이터가 변경될 때마다 옵저버 메소드들은 알림을 받는다. - LiveData를 관찰 가능하도록 만드려면 옵저버(액티비티, 프래그먼트 등)의 LiveData 참조에
observe 메소드를 사용해 옵저버 객체를 붙여야한다. - LiveData 옵저버 패턴은 ViewModel에서 UI controller와 통신하는데 사용될 수 있다.
다음은 Data binding with ViewModel and LiveData codelab을 살펴보도록 하겠다.
728x90
반응형
'Android' 카테고리의 다른 글
안드로이드 FCM 백그라운드 푸시 알림 받기 (4) | 2023.05.08 |
---|---|
카카오톡 공유 앱 이름 바꾸기 (0) | 2023.05.06 |
Codelab으로 LiveData 알아보기 - 7. Add the Play Again Button (0) | 2023.05.01 |
Codelab으로 LiveData 알아보기 - 6. Add LiveData to the ScoreViewModel (0) | 2023.04.28 |
Codelab으로 LiveData 알아보기 - 5. Add a game-finished event(2) (0) | 2023.04.27 |