Когда вызов Retrofit не удается (например, из-за отсутствия Интернета), вызывается, как и ожидалось, обратный вызов RXJava onError
, где у меня есть Snackbar
с прослушивателем setAction()
, обозначенным интуитивно понятной строкой «Retry» где я должен передать команду, чтобы начать снова сетевой вызов.
Я мог бы перезапустить класс, где я нахожусь внутри, вызывая его NameActivity()
, но это выглядит ужасно. Какую команду я могу передать слушателю Snackbar
, чтобы перезапустить приведенный ниже код?
MyViewModel!!.getPost("132")
?.subscribeOn(schedulerProvider!!.io())
?.observeOn(schedulerProvider!!.ui())
?.doOnNext {
run {
spinner.setVisibility(View.VISIBLE)
}
}
?.subscribe(object : FlowableSubscriber<List<Post>> {
override fun onError(t: Throwable?) {
spinner.setVisibility(View.GONE)
spinner.visibility
Snackbar.make(view.findViewById(R.id.linearLayout), "Check Internet Connection!", Snackbar.LENGTH_INDEFINITE)
.setAction("Retry", {})//HERE THE COMMAND SHOULD PASS
.show();
}
override fun onComplete() {
Log.d("TAG", "onComplete: ")
}
override fun onSubscribe(s: Subscription) {
s.request(Long.MAX_VALUE);
}
override fun onNext(posts: List<Post>?) {
spinner.setVisibility(View.GONE)
posts?.let { viewAdapter.setTitleData(it) }
}
})
}