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
반응형