상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - LiveData의 상태 관리 기법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
LiveData는 Android 아키텍처 컴포넌트 중 하나로, UI 컴포넌트가 데이터의 변화를 관찰하고 그에 따라 자동으로 업데이트되도록 설계된 라이프사이클 인지(lifecycle-aware) 데이터 홀더입니다. LiveData의 상태 관리는 주로 다음과 같은 기법과 특징들을 통해 이루어집니다. 1. 라이프사이클 인식 (Lifecycle-Awareness) LiveData는 Activity나 Fragment 같은 라이프사이클 소유자의 상태를 인지합니다. 구독자가 Active 상태(STARTED 혹은 RESUMED)일 때에만 데이터를 전달하고, 비활성 상태(DESTROYED 포함)에서는 업데이트를 중지하여 메모리 누수와 불필요한 UI 업데이트를 방지합니다. - 이로 인해 LiveData는 <a href='https://sangseek.com/sangseeks/상태관리/ko'>상태관리</a>가 자연스럽게 이루어지며, UI 컴포넌트가 비활성화되었을 때도 데이터가 유지되지만, UI는 업데이트되지 않습니다. 2. 데이터 변경 통지 방식 LiveData는 내부에 보관된 데이터를 `setValue()` (메인 스레드에서 호출)나 `postValue()` (백그라운드 스레드에서 호출) 메서드로 갱신합니다. - `setValue()`를 호출하면 즉시 관찰자에게 알림을 보내 UI를 업데이트하도록 합니다. - `postValue()`는 내부적으로 핸들러를 통해 메인스레드에서 실행되도록 예약하며, 여러 번 호출되면 마지막 값만 관찰자에게 전달되는 특징이 있습니다. 3. 최신 상태 유지 LiveData는 구독자가 구독을 시작할 때 현재 저장된 최신 데이터를 즉시 전달합니다. 이는 상태 관리를 단순하게 하며, 구독자가 언제든지 최신 상태를 즉시 반영하게 합니다. 4. 단방향 데이터 흐름 LiveData 자체는 데이터를 읽을 수만 있고 수정은 ViewModel 등 데이터 소스에서만 할 수 있습니다. 이를 통해 데이터의 일관성과 무결성을 유지하며, UI에서 직접 상태를 변경하는 것을 방지합니다. 이는 상태관리를 예측 가능하고 안전하게 만듭니다. 5. MutableLiveData를 통한 상태 변경 관리 일반적으로 ViewModel에서는 `MutableLiveData`를 사용해 데이터를 업데이트하고, UI에서는 읽기 전용인 `LiveData` 인터페이스로만 접근하도록 구현합니다. - 이렇게 하면 UI에서는 LiveData 상태를 읽기만 가능하고, 변경은 오직 ViewModel만 수행할 수 있어 상태 변경 통제가 명확해집니다. 6. Transformations과 MediatorLiveData를 통한 복합 상태 관리 LiveData의 상태 관리를 확장하기 위해 `Transformations.map()`, `Transformations.switchMap()` 같은 메서드나 `MediatorLiveData`를 사용해 여러 LiveData를 결합하거나 변환함으로써 복잡한 상태 관리를 구현할 수 있습니다. - 이를 통해 상태의 파생 데이터 생성, 조건에 따른 상태 변경 등을 쉽게 구현할 수 있습니다. 7. <a href='https://sangseek.com/sangseeks/SingleLiveEvent/ko'>SingleLiveEvent</a>와 Event Wrapper 사용 상태 관리에서 UI 이벤트가 중복 발생하거나 재실행되는 문제(예: 화면 회전 시 Toast 중복 출력)를 방지하기 위해, 이벤트를 처리하는 특수한 LiveData 패턴이나 래퍼를 사용하기도 합니다. - 이벤트 기반 상태 관리를 위한 추가적인 상태 관리 기법으로 간주됩니다. 요약하자면, LiveData의 상태 관리 기법은 라이프사이클과의 연동을 통해 자동으로 상태를 활성화/비활성화하고, 데이터 변경을 확실히 통지하는 한편, 최신 상태를 항상 유지하며, 상태 변경 권한을 명확하게 제어함으로써 안전하고 예측 가능한 UI 상태 관리를 지원하는 구조로 설계되어 있습니다. 또한 Transformations, MediatorLiveData와 같은 도구로 복합 상태를 관리할 수 있고, 이벤트 처리를 위한 기법을 별도로 적용하여 상태 관리를 확장합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기