가끔 Rx를 쓰다보면 위 그림과 같이 통채로 오줌이 발생하는 경우가 있었다.
처음엔 Rx에서 존재감을 내뿜을라고 일부러 눈에 잘 보이게 해 놓은줄 알았는데 그냥 경고다
Observable 객체에서 발행할 아이템을 정의한 후 subscribe()를 통해 스트림을 생성하고 아이템을 발행했다. Rx를 사용하면 return되는 객체인 disposable. 이는 비동기구문이라 사용하지 않으면 dispose를 시켜줘야하는데, 위 코드에는 dispose를 받는 변수가 없어 dispose를 따로 시키지 않을거라고 안드로이드 스튜디오에서 인식하여 경고창이 나는 것이다.
변수를 붙혀준다.
val disposable = repository.getImageList(contentId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
setList(it)
},
{
onFailLoad()
Log.e(ERROR, "DetailFragmentViewModel: ${it.message}")
}
)
// dispose하는 것도 잊지 말기
override fun onClear() {
disposable.dispose()
}