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())
감사합니다.
'Android' 카테고리의 다른 글
[안드로이드] 시간 객체 LocalDataTime ↔ Long 파싱하기 (0) | 2023.07.05 |
---|---|
[안드로이드] EditText 입력 키패드(키보드) 올리기 및 내리기 (0) | 2023.06.09 |
[안드로이드] GPS 위치 정보 접근 권한 확인하기! (0) | 2023.05.31 |
[안드로이드] Toast 메시지 누를때마다 갱신시키기 (0) | 2023.04.28 |
[안드로이드] XML뷰에 샘플 데이터 넣기 (0) | 2023.04.19 |