Cannot invoke setValue on a background thread 해결 방법
2020.08.03
AAC를 사용하면서 가끔 발생하는 오류이다. 보통 livedata 객체에 값을 넣을 때 발생한다. LiveData 객체에 값을 설정하는 방법이 두 가지가 있는데, setValue()와 postValue가 있다. 이 두 함수는 모두 LiveData객체에 값을 저장하는 역할을 한다. 이 두 함수를 구독하고 있는 옵저버가 있는 상태에서 사용하게 되면, value의 값이 변경되는 즉시 변경된 값을 받을 수 있다. 하지만 다른 점이 한 가지 있다. setValue()는 메인 쓰레드에서 바로 반영된다는 것이고, postValue는 백그라운드에서 반영된다. 따라서 해당 오류를 해결하기 위한 방법으로는, 간단하게 setValue 대신 postValue를 이용하면 된다.