Как прекратить наблюдение?

У меня есть Observable, который я хочу завершить, если определенное условие не выполняется (то есть, если ответ с определенного сайта не увенчался успехом), чтобы я мог повторно запросить веб-сайт и снова вызвать наблюдаемый. Как мне это сделать?

Вот что я хочу сделать:

Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { //Perform network actions here if (!response.isSuccessful()) { //terminate this Observable so I can retrieve the token and call this observable again } } }); 

Вы можете использовать оператор повтора Rx. И не нужно прекращать наблюдение.

Определено пользовательское исключение:

 public class FailedException extends RuntimeException{ // ... } private static final int RETRY_COUNT = 3; // max retry counts Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { //Perform network actions here if (!response.isSuccessful()) { // if response is unsucceed, invoke onError method and it will be stop emit data and into retry method. subscriber.onError(new FailedException()); } } }) .retry((integer, throwable) -> { // Retry network actions when failed. // if return true, Observable will be retry to network actions emit data; // if return false, you can process in onError() method of Subscribe. return throwable instanceof FailedException && integer < RETRY_COUNT; }) 

Вы можете отфильтровать результат перед подпиской. Не обрабатывайте его, когда вы создаете свой наблюдаемый.

Проверить функцию наблюдаемого.фильтра

Intereting Posts
Как создать пользовательские тени в robolectric 3.0? Android – запрос SMS ContentProvider? Что такое paddingStart и paddingEnd? Должен ли я строго избегать использования перечислений на Android? Не удалось отключить APK, случайно загруженный в Prod Рисунок андроида на сенсорном событии Комбинация WindowManager.LayoutParams, которая может передавать события слоям под TYPE_SYSTEM_ALERT или smilar Взгляд на передний план не работает В Android для проверки подключения к Интернету можно часто? Как реализовать новую версию API Google Maps версии 2 Выполняет ли нить при завершении работы? Экран загрузки приложений Android Принесите маркеры карт Google на передний план, изменив Z-Index на Android Почему растровое декодирование с помощью inBitmap всегда получает java.lang.IllegalArgumentException: декодирование P ro ble в существующее растровое изображение Служба резервного копирования Android – когда и как часто делать резервную копию?