코딩하는 일용직 노동자

Cannot invoke setValue on a background thread 에러 해결하기 본문

안드로이드

Cannot invoke setValue on a background thread 에러 해결하기

bacass 2021. 5. 12. 22:13

ViewModel 안에 만들어둔 MutableLiveData 변수의 value 를 바꿔주기 위해
.setValue() 나 .sendEvent() 를 사용하니 앱이 바로 죽습니다.

왜 죽는거야 ㅠ.ㅠ

에러로그를 보니 메인쓰레드가 아닌 다른 쓰레드에서 MutableLiveData 의 값을 셋팅하다보니 발생한 에러입니다.
(CoroutineScope 는 Dispatchers.IO 로 만들어서 사용중이었습니다.)


구글링을 해보니 아주 간편한 해결법이 있습니다.
postValue() 로 값을 셋팅해주면 됩니다.

postValue 함수를 이용하면 쉽게 해결된다.