상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - LiveData에서 데이터를 설정하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
LiveData에서 데이터를 설정하는 방법은 크게 두 가지로 구분할 수 있습니다. LiveData는 기본적으로 읽기 전용이기 때문에 데이터를 직접 변경할 수 없고, 데이터를 변경하려면 MutableLiveData를 사용해야 합니다. 1. MutableLiveData 선언 LiveData를 수정할 수 있으려면 MutableLiveData라는 하위 클래스를 사용해야 합니다. MutableLiveData는 LiveData와 동일한 기능을 가지면서 데이터를 변경할 수 있는 `setValue()`와 `postValue()` 메서드를 제공합니다. 예를 들어 ViewModel 안에서 MutableLiveData로 변수를 선언할 수 있습니다: ```kotlin private val _data = MutableLiveData<String>() val data: LiveData<String> get() = _data ``` 여기서 `_data`는 내부에서 데이터 변경을 위해 MutableLiveData 타입이고, 외부에는 읽기 전용 LiveData 타입으로 노출하는 것이 권장되는 패턴입니다. 2. setValue() 메서드 사용하기 `setValue()` 메서드는 메인(UI) 스레드에서 데이터를 즉시 변경할 때 사용합니다. 기존 데이터가 새 값으로 즉시 갱신되며, 관찰자(Observer)들에게 값 변경 이벤트가 발생합니다. ```kotlin _data.setValue("새 데이터") ``` 만약 메인 스레드가 아니고 백그라운드 스레드에서 데이터를 변경해야 한다면 `setValue()`를 사용할 수 없고, 대신 `postValue()`를 사용해야 합니다. 3. postValue() 메서드 사용하기 `postValue()`는 메인 스레드가 아닌 다른 스레드(예: 백그라운드 작업)에서 안전하게 값을 설정할 때 사용합니다. `postValue()`는 내부적으로 메인 스레드로 값을 전달하고, 데이터 변경 및 관찰자 알림이 비동기적으로 처리됩니다. ```kotlin _data.postValue("백그라운드에서 설정한 데이터") ``` 4. LiveData 값 변경 요약 - UI/메인 스레드에서는 `setValue()`를 사용해 즉시 값을 변경 - 백그라운드 스레드에서는 `postValue()`를 사용해서 비동기적으로 값을 변경 - 관찰자가 LiveData를 구독하면 데이터가 변경될 때마다 알림을 받음 5. 불변 LiveData와 가변 MutableLiveData의 분리 외부에서는 LiveData로 데이터를 받아 읽기만 하도록 하고, ViewModel 내부에서만 MutableLiveData로 값을 변경하는 패턴이 일반적입니다. 이렇게 하면 데이터 캡슐화와 무결성을 유지할 수 있습니다. --- 정리하면, LiveData 자체는 데이터 설정 기능이 없기 때문에 MutableLiveData를 사용해야 하며, main 스레드에서는 `setValue()`, 비동기 또는 백그라운드에서는 `postValue()`로 데이터를 설정합니다. LiveData와 MutableLiveData를 적절히 구분하여 사용하면 안전하고 명확한 데이터 흐름을 설계할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기