개발새발 - IT 기술블로그
article thumbnail
java.lang.IllegalStateException: Cannot invoke setValue on a background thread

 

해당 에러는 라이브데이터를 사용할 때 MutableLiveData 타입의 변수에 값을 넣는 과정에서 주로 발생합니다.

 

Livedata 객체에 값을 넣는 방식은 setValue와 postValue 두가지가 존재합니다.

 

setValue는 메인 스레드에서 직접 값을 할당하는 방식이고, 반대로 postValue는 백그라운드에서 값을 할당하는 방식입니다.

 

만약 위 에러가 발생했다면 setValue를 백그라운드 스레드에서 사용하고 있진 않은지 확인하기 바랍니다.

 

postValue와 setValue의 사용방법을 간단하게 보여드리고 글을 마무리하겠습니다.

 

 

setValue

mutableLiveData.value = response.body()

 

postValue

mutableLiveData.postValue(response.body())

 

감사합니다.