Cannot invoke setValue on a background thread 해결 방법
AAC를 사용하면서 가끔 발생하는 오류이다. 보통 livedata 객체에 값을 넣을 때 발생한다.
LiveData 객체에 값을 설정하는 방법이 두 가지가 있는데,
setValue()와 postValue가 있다. 이 두 함수는 모두 LiveData객체에 값을 저장하는 역할을 한다.
이 두 함수를 구독하고 있는 옵저버가 있는 상태에서 사용하게 되면, value의 값이 변경되는 즉시 변경된 값을 받을 수 있다.
하지만 다른 점이 한 가지 있다.
setValue()는 메인 쓰레드에서 바로 반영된다는 것이고, postValue는 백그라운드에서 반영된다.
따라서 해당 오류를 해결하기 위한 방법으로는, 간단하게 setValue 대신 postValue를 이용하면 된다.
'Android' 카테고리의 다른 글
[안드로이드 모듈] 외부 종속 라이브러리 같이 배포 (0) | 2020.12.17 |
---|---|
Android Studio 이전 버전 세팅 불러오는 방법 (0) | 2020.08.13 |
RecyclerView에 줄 라인 추가하기(Divider) (0) | 2020.07.27 |
Layout Inspector로 레이아웃 디버깅하기 (0) | 2020.06.01 |
Android에서의 MVVM은 무엇이고 왜 사용하는가 (0) | 2020.04.06 |
댓글
이 글 공유하기
다른 글
-
[안드로이드 모듈] 외부 종속 라이브러리 같이 배포
[안드로이드 모듈] 외부 종속 라이브러리 같이 배포
2020.12.17 -
Android Studio 이전 버전 세팅 불러오는 방법
Android Studio 이전 버전 세팅 불러오는 방법
2020.08.13 -
RecyclerView에 줄 라인 추가하기(Divider)
RecyclerView에 줄 라인 추가하기(Divider)
2020.07.27 -
Layout Inspector로 레이아웃 디버깅하기
Layout Inspector로 레이아웃 디버깅하기
2020.06.01