상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - LiveData의 setValue와 postValue의 차이는?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
LiveData에서 `setValue()`와 `postValue()`는 모두 LiveData의 내부 데이터 값을 변경하는 데 사용되지만, 그 동작하는 방식과 쓰임새에 중요한 차이가 있습니다. 1. setValue() - 동기 방식 : `setValue()`는 메인(UI) 스레드에서 호출되어야 하며, 즉시 데이터 값을 변경하고 연결된 옵저버(observer)에게 즉시 변경 사항을 통보합니다. - 메인 스레드에서만 호출 가능 : 만약 백그라운드 스레드에서 `setValue()`를 호출하면 예외가 발생합니다. 따라서 UI 스레드에서 동작을 할 때 주로 사용합니다. - 즉각적인 반영 : 호출 즉시 LiveData의 값이 변경되어 관찰자에게 전파되므로, UI를 즉시 업데이트해야 할 경우 적합합니다. 2. postValue() - 비동기 방식 : `postValue()`는 어떤 스레드에서든 호출할 수 있습니다. 내부적으로 메인 스레드 <a href='https://sangseek.com/sangseeks/핸들러/ko'>핸들러</a>를 통해 값 변경이 예약되고, 나중에 메인 스레드에서 `setValue()`를 호출하는 형태로 동작합니다. - 백그라운드 작업에서 주로 사용 : 백그라운드 스레드(예: 네트워크 작업, 데이터베이스 조회)에서 LiveData 값을 업데이트할 때 안전하게 사용할 수 있습니다. - 값 변경이 지연될 수 있음 : 여러 번 `postValue()`를 빠르게 호출하면 마지막 한 번의 값만 반영됩니다(즉, 병합되는 경향이 있음). 따라서 연속적인 여러 값 변화를 놓칠 수 있습니다. 요약하자면, - UI 스레드라면 즉시 값을 바꾸고 바로 알림을 주기 위해 `setValue()`를 사용합니다. - 백그라운드 스레드라면 `postValue()`를 사용하여 메인 스레드에서 값 변경과 알림 작업이 안전하게 수행되도록 예약합니다. 따라서 올바른 스레드 컨텍스트를 고려하여 적절한 메서드를 선택하는 것이 중요합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기