[Android] LiveData와 Obsever패턴

KSK·2025년 3월 16일

옵저버패턴

  • 어떤 객체를 구독하는 구독자가 있고
  • 구독자는 이 객체의 상태가 변경되면 알림을 받고 동작을 수행하는 패턴
  • 구성요소
    • Subject: 객체 상태를 유지하고 관리하며, 변경 시 구독자에게 알림을 보냄
    • Observer: 구독하고 있는 객체의 상태 변경을 감시함, 변화가 생기면 그에 따른 갱신동작을 수행함
  • 구독자는 구독을 등록하거나 해제할 수 있음

LiveData와 옵저버패턴

  • 라이브데이터가 변경 되면 Observer에게 자동으로 알림
  • Observer는 변경된 데이터를 가지고 UI를 업데이트함
  • Lifecycle-aware: LiveData는 생명주기 인식 기능이 있다. 즉, ActivityFragment활성 상태일 때만 데이터를 업데이트하여 메모리 누수나 잘못된 상태 업데이트를 방지함
  • 일반적으로 액비티비/프래그먼트 같은 LifeCycleOwner가 Observer와 바인딩되어 구독자가 되어 뷰모델의 라이브데이터를 구독하고 UI를 갱신한다.

LiveData에서의 Observer 패턴 흐름:

  1. Observer(예: UI 컴포넌트)가 LiveData에 구독을 요청합니다. 이때 observe() 메서드를 사용합니다.
  2. LiveData는 데이터의 변경을 감지하고, 구독된 Observer에게 알립니다.
  3. Observer는 변경된 데이터를 받아 UI나 로직을 갱신합니다.
  4. LiveData는 Activity/Fragment의 생명 주기를 자동으로 감지하므로, Activity/Fragment가 비활성화되었을 때는 데이터를 보내지 않습니다.

profile
그런게어딨어그냥하는거지

0개의 댓글