ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (jetpack) LiveData
    개발/Android 2021. 7. 16. 22:15

     

    LiveData란?

    • LiveData는 Data의 변경을 관찰 할 수 있는 DataHolder 클래스
    • 일반적인 Observable과는 다르게 LiveData는 안드로이드 생명주기를 알고있음
    • 즉 액티비티나, 프레그먼트, 서비스 등과 같은 안드로이드 컴포넌트의 생명주기를 인식하며 그에 따라 LiveData는 활성상태(active)일때만 데이터를 업데이트 함
    • LiveData는 Observer 객체와 함께 사용 가능 LiveData가 가지고 있는 데이터에 어떠한 변화가 일어날 경우, LiveData는 등록된 Observer 객체에 변화를 알려주고, Observer의 onChanged() 메소드가 실행되게 됨.

     

     

    LiveData의 장점

    1. Data와 UI간의 동기화
      • LiveData는 Observer 패턴을 따름, 그에 따라 LiveData는 안드로이드 생명주기에 데이터 변경이 일어날 때마다 Observer 객체에 알려줌. 따라서 데이터의 변화가 일어날때마다 UI의 업데이트 하는 코드를 작성할 필요 없이 통합적이고 확실하게 데이터의 상태와 UI를 일치 시킬수 있음
    2. 메모리 누수가 없음
      • Observer 객체는 안드로이드 생명주기 객체와 결합되어 있기 때문에 컴포넌트가 Destroy 될 경우 메모리상에서 스스로 해제 함
    3. Stop 상태의 액티비티와 crash 발생하지 않음
      • 액티비티가 Back Stack에 있는 것처럼Observer의 생명주기가 inactive(비활성화)일 경우,
      • Observer는 LiveData의 어떤 이벤트도 수신하지 않음.
    4. 생명주기에 대한 추가적인 handling을 하지 않아도 됨.
      • LiveData가 안드로이드 생명주기에 따른 Observing을 자동으로 관리를 해주기 때문에 UI 컴포넌트는 그저 관련 있는 데이터를 "관찰" 하기만 하면 됨.
    5. 항상 최신 데이터를 유지함
      • 화면 구성이 변경되어도 데이터를 유지함.
      • 예를 들어, 디바이스를 회전하여 세로에서 가로로 화면이 변경될 경우에도 LiveData는 회전하기 전의 최신 상태를 즉시 받아옴.
    6. 자원 공유가능
      • LiveData를 상속하여 자신만의 LiveData클래스를 구현 할 수 있고 싱글톤 패턴을 이용하여 시스템 서비스를 wrap하면 앱 어디에서나 자원을 공유 할 수 있음.
      •  

    예제

    Untitled

     

    관찰이 필요한 data에 LiveData로 wrap 해줌

    Untitled 1

    LiveData로 wrap 해주면 observe 객체 사용가능

    데이터가 변활때 마다 불리는 콜백에 UI관련 로직 구현

    '개발 > Android' 카테고리의 다른 글

    UI 커스텀 할때 유용한 사이트  (0) 2021.07.21
    Android Room TypeConverters  (0) 2021.07.19
    Android 데이터 직렬화  (0) 2021.07.15
    android notification 즉시응답  (0) 2021.07.15
    android 이미지 다중선택  (0) 2021.07.13

    댓글

Designed by Tistory.