LiveData란

  • LiveData는 Data의 변경을 관찰할 수 있는 데이터 홀더 클래스
  • 일반적인 Observable과는 달리 LiveData는 안드로이드 LifeCycle을 따르고 있음
  • 여기서 LifeCycle은 Activity, Fragment, Service 등과 같은 안드로이드 컴포넌트의 LifeCycle을 인식
  • 이에 따라 LiveData는 해당 컴포넌트의 LifeCycle의 상태가 ACTIVE(STARTED or RESUMED)일 때만 데이터 업데이트
  • LiveData 객체는 Observer 객체와 함께 사용되어 LiveData가 가지고 있는 데이터에 어떤 변화가 감지되면 LiveData는 Observer객체에 변화를 알리고 Observer의 onChanged메서드가 실행
  • LiveData는 LifeCyclerOwner라는 인터페이스의 getLifeCycle()를 통해 안드로이드 LifeCycle을 알고 있게 됨

 

 

LiveData의 장점

  • 데이터와 UI 상태 일치 보장
    • LiveData는 데이터가 변경될 때마다 Observer 객체에게 알려주고, Observer는 알림을 받을 때마다 대신 UI를 업데이트하므로 데이터와 UI 상태 일치를 보장한다.
  • 메모리 누수 없음
    • Observer는 Activity나 Fragment의 수명 주기를 따르며 수명 주기가 끝나면 자동으로 삭제된다. 따로 메모리를 해제하거나 하는 작업을 하지 않아도 된다는 뜻이다.
  • 중지된 활동으로 인한 비정상 종료 없음
    • Activity나 Fragment가 백 스택에 있을 때 Observer는 비활성 상태가 되며, 이때는 어떤 LiveData 이벤트도 수신받지 않는다.
  • 수명 주기를 수동으로 처리하지 않음
    • UI 구성요소는 데이터를 관찰할 수만 있고 관찰을 중지하거나 다시 시작하지 않는다. 대신 수명 주기 상태의 변경을 인식하기 때문에 이를 통해 자동으로 관리한다.
  • 리소스 공유
    • LiveData 객체가 시스템 서비스에 한 번 연결되면 LiveData가 필요한 모든 곳에서(모든 Observer가) LiveData 객체를 관찰할 수 있다.

'기초개념 > Jetpack' 카테고리의 다른 글

DataBinding이란  (0) 2022.03.25
MVVM 아키텍처와 AAC  (0) 2022.03.24
Room 이란?  (0) 2022.03.14
Jetpack이란?  (0) 2022.01.20

+ Recent posts