override fun onResume() { super.onResume() Observable.interval(initialDelay, 60, TimeUnit.SECONDS) .flatMap { trainBoardApi.liveEta() // retrofit } .compose(bindToLifecycle()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ response -> lastLoadSuccessTimestamp = System.currentTimeMillis() // update UI here... adapter.notifyDataSetChanged() }, { e -> // show error message }) }