[Android] LiveData와 Obsever패턴
옵저버패턴
- 어떤 객체를 구독하는 구독자가 있고
- 구독자는 이 객체의 상태가 변경되면 알림을 받고 동작을 수행하는 패턴
- 구성요소
- Subject: 객체 상태를 유지하고 관리하며, 변경 시 구독자에게 알림을 보냄
- Observer: 구독하고 있는 객체의 상태 변경을 감시함, 변화가 생기면 그에 따른 갱신동작을 수행함
- 구독자는 구독을 등록하거나 해제할 수 있음
LiveData와 옵저버패턴
- 라이브데이터가 변경 되면 Observer에게 자동으로 알림
- Observer는 변경된 데이터를 가지고 UI를 업데이트함
- Lifecycle-aware: LiveData는 생명주기 인식 기능이 있다. 즉,
Activity나 Fragment가 활성 상태일 때만 데이터를 업데이트하여 메모리 누수나 잘못된 상태 업데이트를 방지함
- 일반적으로 액비티비/프래그먼트 같은 LifeCycleOwner가 Observer와 바인딩되어 구독자가 되어 뷰모델의 라이브데이터를 구독하고 UI를 갱신한다.
LiveData에서의 Observer 패턴 흐름:
- Observer(예: UI 컴포넌트)가 LiveData에 구독을 요청합니다. 이때
observe() 메서드를 사용합니다.
- LiveData는 데이터의 변경을 감지하고, 구독된 Observer에게 알립니다.
- Observer는 변경된 데이터를 받아 UI나 로직을 갱신합니다.
- LiveData는 Activity/Fragment의 생명 주기를 자동으로 감지하므로, Activity/Fragment가 비활성화되었을 때는 데이터를 보내지 않습니다.
