class SampleViewModel @Inject constructor( private val fetchUseCase: FetchUseCase ) : BaseViewModel() { private val pageViewState = MutableLiveData<PageViewState>() fun getPageViewState(): LiveData<PageViewState> = pageViewState fun fetchData() { fetchUseCase .fetchData() .observeOn(AndroidSchedulers.mainThread()) .subscribe({ renderData(it) }, ThrowableReporter::report) // ThrowableReporter is a logger class .also { disposable += it } // disposable is CompositeDisposible in BaseViewModel // += is extension that is created to add Disposable to CompositeDisposable } private fun renderData(viewState: PageViewState) { pageViewState.value = viewState } }