¿Cómo terminar un observable?

Tengo un Observable que quiero terminar si una cierta condición no se cumple (es decir, si la respuesta de un sitio web determinado no tiene éxito), para que pueda volver a consultar el sitio web, y llamar a los observables de nuevo. ¿Cómo hago para hacerlo?

Esto es lo que quiero hacer:

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 } } }); 

Puede utilizar el operador de repetición de Rx. Y no es necesario terminar un observable.

Definición de una excepción personalizada:

 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; }) 

Puede filtrar el resultado antes de suscribirse. No lo maneje cuando crea su observable.

Compruebe la función observable.filter

  • ¿Por qué Rxjava podría causar fugas de memoria?
  • RxAndroid y Retrofit: No se puede crear el adaptador de llamada para io.reactivex.Observable <retrofit2.Response <okhttp3.ResponseBody >>
  • La comprensión incorrecta del búfer en RxJava
  • Rx java retrofit 2 manejo de errores
  • Dar un RxJava Observable algo a emitir de otro método
  • Utilizar RxJava para encadenar la solicitud en un solo hilo
  • InterruptedIOException al cambiar de mainThread () a io ()
  • Cómo manejar diferentes tipos de errores en Retrofit Rx onError sin instancia fea
  • RxJava2 en la función de devolución de llamada onLoadFinished de CursorLoader
  • Cómo observar los cambios de red en RxAndroid
  • Encadenamiento de RxJava observables con callbacks / listeners
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.