최근 기존 Android앱이나, 신규 앱을 제작해보면서 디자인 패턴을 적용시켜보고 있다.
MVVM 패턴으로 작은 앱을 제작해보던 중, LiveData를 많이 사용하고 있길래 공부 겸 글을 작성한다.
LiveData 개요
- 관찰 가능한 데이터 홀더 클래스. 데이터의 상태를 보유하고 관리하는 객체이다.
- UI와 데이터를 연결하는 데 이용한다.
- 다른 데이터 클래스와 달리 수명주기를 인식한다.
.
.
.
말 그대로 실시간으로 변경되는 데이터, 라이브 데이터다. 실시간으로 이루어지기 때문에 생명주기에 영향을 받고, 그 데이터를 항상 관찰하는 객체(=Observer)가 필요하다. 실시간으로 데이터가 변하면, UI가 그대로 바뀌기 때문에 UI와 데이터가 연결되는 것이다.
수명주기는 어떤 원리로 인식하는가?
LiveData는 Observer의 수명주기에 따르는데, STARTED 혹은 RESUMED 상태일 때 LiveData는 Observer가 활성 상태라고 간주한다.
그럼 LiveData는 활성 상태인 Observer에게만 업데이트를 알리고, 활성 상태인 Observer는 이에 따라 실시간으로 UI를 업데이트하는 것이다.
Observer의 수명주기가 Destroy로 끝나는 즉시 LiveData의 데이터는 수신 거부되어 데이터를 안전하게 관리할 수 있다.

LiveData의 이점
- UI와 데이터 상태가 일치한다.
- 메모리의 누수가 없다. : 생명주기에 따라 자동으로 삭제되기 때문에 메모리의 누수가 없다.
- 중지된 활동으로 인한 비정상적인 종료가 없어진다. : 옵저버가 백그라운드에 있을 때, 어떤 LiveData도 받지 않기 때문에 활동의 종료에 구애받지 않는다.
- 수명 주기를 자동으로 관리한다. : Observer는 관련 데이터를 수명 주기에서 활성화된 동안에는 무조건 관찰한다! 그리고 LiveData는 수명주기를 인식하기 때문에 모든 것이 자동으로 관리되는 것이다.
- 항상 최신 데이터로 유지한다. : Observer가 비활성화되어있다, 활성화되더라도 즉시 최신 데이터를 받기 때문에 가능하다!
- 구성이 변경될 때 마다 최신 데이터로 업데이트 된다. : 화면이 회전될 때에도 즉시 변경된다.
- 리소스 공유로 확장이 가능하다. : 하나의 LiveData를 여러 Observer가 볼 수 있기 때문이다!
반응형
'CS > Kotlin' 카테고리의 다른 글
| [Android Studio][Kotlin] Unit Test: Method ~ in ~ not mocked 문제 해결 (0) | 2024.09.29 |
|---|