[android] MVVM – 11. Use RxLifecycle in ViewModel

[android] MVVM – 11. Use RxLifecycle in ViewModel

Rx 가 비동기로 동작하다보니, 앱이 완전히 종료해야 동작이 끝나는 경우가 있다.

이 코드를 실행하면 back 버튼을 눌러서 앱을 종료해도 계속 로그가 찍힌다.

 

그래서 나온 것이 바로 https://github.com/trello/RxLifecycle

 

build.gradle 에 추가하고

 

그 후에 RxAppCompatActivityRxFragment 를 상속받은 후에

 

.compose(bindToLifecycle())를 추가한다.

이러면 아까처럼 back  버튼으로 앱을 종료하면 로그도 멈춘다.

 

하지만 뷰모델에서도 Rx를 써야하는데 bindToLifeCycle() 을 그냥 쓸 수는 없다. 남들은 어떻게하나 싶었는데, 생각보다 잘 안 나와서 걱정하던 중에 RxAppCompatActivity 코드를 보니 답이 있었다.

그걸 적용해서 BaseViewModel을 이렇게 바꾸면 된다.

 

대신 Activity의 onDestroy()에서 뷰모델의 onDestroy()를 반드시 호출해줘야 정상동작한다.