Cannot call this method while RecyclerView is computing... 에러
Wits15730 opened this issue · 1 comments
과제 3진행 도중
java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling androidx.recyclerview.widget.RecyclerView
와 같은 에러를 만났습니다.
그런데 stack overflow를 보니 그 이유는 notifydatasetchanged를 UI Thread에서 실행하지 않아서라고 하더군요
그래서 다음과 같이 만들었습니다
그런데도 앱에 계속 꺼지네요.. 주석처리를 해 봤는데 위의 notifydatasetchanged를 주석처리하면 빌드는 되는데 화면에 아무것도 안 나요고, 아니면 그냥 빌드가 안 됩니다.
왜 그런지 모르겠어서 이슈로 남깁니다 감사합니다!
말 그대로 ui를 수정하게되는 notifyDataSetChange
를 메인이 아닌 다른 쓰레드에서 불러서 위와같은 에러가 발생한 것 같습니다. 어노테이션을 붙인 @UiThread
는 해당 함수가 ui thread 가 아닌 곳에서 불리면 에러를 발생시키도록 지시하는 어노테이션이지, 저걸 uiThread 에서 부르게 해 주는 어노테이션이 아닙니다. (https://developer.android.com/reference/androidx/annotation/UiThread?hl=en)
setItems 가 불리는 쓰레드가 어디인지 확인해 보시고 해당 부분의 Rx Observer 를 잘 변경해주거나 runOnUiThread { ... }
로 문제를 해결할 수 있을 것 같습니다.