¿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:
- ¿Cómo obtener el último valor de BehaviorSubject?
- Schedulers.io () no vuelve al hilo principal
- Evento de RxJava de incendio sólo cambia cuando Fragmento es visible en ViewPager
- Android + RxJava - carga de datos de db y servicio web
- ¿Cómo puedo implementar el equivalente RxJava de INotifyPropertyChanged para hacer un modelo de datos 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 } } });
- Flatten Observable <Observable <Cursor >> Observable <Cursor>
- Cuándo cancelar una suscripción
- ¿Cómo se muestra spinner si RxJava observable toma mucho tiempo?
- Obtenga el código de estado de la respuesta utilizando Retrofit 2.0 y RxJava
- RxJava No puede crear el controlador dentro de hilo que no ha llamado Looper.prepare ()
- Uso de RoboSpice y RxJava
- Cómo resolver los archivos duplicados copiados en APK META-INF / rxjava.properties
- Unidad de prueba de la aplicación android con retrofit y rxjava
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
- Cómo manejar este tipo de datos en Array – JAVA
- Android: Establecer margen para editar texto en el cuadro AlertDialog