LiveData란?
관찰 가능한 데이터 홀더 클래스입니다. 관찰 가능한 일반 클래스와 달리 LiveData는 수명 주기를 인식합니다. 즉, 활동, 프래그먼트, 서비스 등 다른 앱 구성요소의 수명 주기를 고려합니다. 수명 주기 인식을 통해 LiveData는 활동 수명 주기 상태에 있는 앱 구성요소 관찰자만 업데이트합니다.
😁LiveData의 좋은점!!
1. UI와 데이터 상태의 일치 보장
- LiveData는 Observer pattern을 따릅니다. 기본 데이터가 변경될 때 Observer 객체에 이벤트를 전달하여 UI를 업데이트 할 수 있습니다. 앱 데이터가 변경될 때마다 관찰자가 대신 UI를 업데이트하므로 개발자가 업데이트할 필요 없습니다!
2. 메모리 누수 없음
- 관찰자는
Lifecycle
객체에 결합되어 있으며 연결된 수명 주기가 끝나면 자동으로 삭제됩니다. (하지만 잘못된 사용은 메모리 누수를 발생시 킬 수 있습니다😥)
3. 중지된 활동으로 인한 비정상 종료 없음
- 활동이 백 스택에 있을 때를 비롯하여 관찰자의 수명 주기가 비활성 상태에 있으면 관찰자는 어떤 LiveData 이벤트로 받지 않습니다. 즉, STARTED ~ RESUMED 이외의 상태는 이벤트를 받지 않습니다.
4. 수명 주기를 더 이상 수동으로 처리하지 않음
- UI 구성요소는 관련 데이터를 관찰하기만 할 뿐 관찰을 중지하거나 다시 시작하지 않습니다. LiveData는 관찰하는 동안 관련 수명 주기 상태의 변경을 인식하므로 모든 것을 자동으로 관리합니다.
5. 최신 데이터 유지
- not active -> active로 상태가 변화될 때 최신 데이터를 수신합니다. 예를 들어 백그라운드에 있던 활동이 포그라운드로 돌아올 때 데이터를 수신합니다.
6. 적절한 구성 변경
- 기기 회전과 같은 구성 변경으로 인해 활동 또는 프래그먼트가 다시 생성되면 사용 가능한 최신 데이터를 즉시 받습니다.
7. 리소스 공유
- 앱에서 시스템 서비스를 공유할 수 있도록 싱글톤 패턴을 사용하는 LiveData 객체를 확장하여 시스템 서비르를 래핑할 수 있습니다.
LiveData 객체가 시스템 서비스에 한 번 연결되면 리소스가 필요한 모든 관찰자가 LiveData 객체를 볼 수 있습니다.
안드로이드 공식문서 : https://developer.android.com/topic/libraries/architecture/livedata?hl=ko#update_livedata_objects