본문 바로가기
Android

[Android] LiveData의 이해: Android 앱에서 데이터와 UI의 효율적 동기화

by quessr 2024. 4. 21.

 

LiveData는 Android 아키텍처 컴포넌트의 일부로, 데이터 관찰 및 UI 업데이트를 위한 데이터 홀더 클래스이다.

LiveData는 관찰 가능한 데이터 클래스로서, UI 컴포넌트가 데이터의 변경 사항을 관찰하고, 데이터가 변경될 때마다 UI를 자동으로 업데이트할 수 있도록 해준다.

LiveData의 주요 특징과 작동 방식은 다음과 같다.

 

1. 생명주기 인식

  • LiveData는 생명주기를 인식하는 컴포넌트로서, Android 생명주기에 따라 관찰자(Observer)에게 데이터 변경을 통지한다.
    즉, 액티비티나 프래그먼트의 생명주기 상태를 고려하여, 이 컴포넌트들이 활성 상태(STARTED 또는 RESUMED 상태)일 때만 데이터 업데이트를 수신한다.
  • 이로 인해 메모리 누수, 액티비티가 종료된 후에도 데이터 업데이트로 인한 앱의 충돌 등의 문제를 방지할 수 있다.

2. UI와 데이터의 동기화

  • LiveData를 사용하면 UI 컴포넌트(예: TextView)가 LiveData 객체를 관찰하고, LiveData에 저장된 데이터가 변경될 때마다 UI가 자동으로 업데이트된다.
  • 이는 데이터 바인딩 또는 수동으로 UI 업데이트 로직을 구현하는 것보다 더 간편하고 효율적이다.

3. 데이터 변경의 통지

  • LiveData 객체에 저장된 데이터가 변경될 때, setValue(T) 또는 postValue(T) 메소드를 통해 LiveData에 새로운 데이터를 설정할 수 있다.
  • setValue(T) 메소드는 메인 스레드에서 호출되어야 하며, postValue(T) 메소드는 백그라운드 스레드에서 호출할 수 있다.
  • 데이터가 설정되면, LiveData는 자동으로 모든 활성 관찰자(Observer)에게 데이터 변경을 통지한다.

4. 데이터의 캡슐화

  • LiveData는 데이터를 캡슐화하고, 데이터에 대한 접근을 제어할 수 있다.
    일반적으로 ViewModel 내에서 MutableLiveData를 사용하여 데이터를 관리하고, ViewModel 외부에는 변경 불가능한 LiveData로 데이터에 대한 접근을 제공한다.
  • 이를 통해 데이터의 무결성을 유지하고, UI 컴포넌트가 데이터를 직접 변경하지 못하도록 한다.

LiveData 이러한 특징을 통해 Android 개발에서 데이터와 UI 동기화를 용이하게 하고, 생명주기 관리를 자동으로 처리하여 보다 안정적이고 효율적인 앱을 구축할 있도록 돕는다.

 


참고 : https://developer.android.com/topic/libraries/architecture/livedata 

 

LiveData 개요  |  Android 개발자  |  Android Developers

LiveData를 사용하여 수명 주기를 인식하는 방식으로 데이터를 처리합니다.

developer.android.com