[Android Warning] Disposable

양현진·2022년 3월 31일
0

Oh My Android

목록 보기
14/22
post-thumbnail
post-custom-banner

가끔 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()
}
profile
Android Developer
post-custom-banner

0개의 댓글