Mi piacerebbe sapere come ignorare le eccezioni e continuare lo streaming infinito (nel mio caso flusso di posizioni)?Come ignorare l'errore e continuare lo streaming infinito?
Sto recuperando la posizione dell'utente corrente (utilizzando Android-ReactiveLocation) e quindi inviandole alla mia API (utilizzando Retrofit).
Nel mio caso, quando si verifica un'eccezione durante una chiamata di rete (ad es. Timeout) viene invocato il metodo onError
e il flusso si arresta automaticamente. Come evitarlo?
attività:
private RestService mRestService;
private Subscription mSubscription;
private LocationRequest mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(100);
...
private void start() {
mRestService = ...;
ReactiveLocationProvider reactiveLocationProvider = new ReactiveLocationProvider(this);
mSubscription = reactiveLocationProvider.getUpdatedLocation(mLocationRequest)
.buffer(50)
.flatMap(locations -> mRestService.postLocations(locations)) // can throw exception
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
}
RestService:
public interface RestService {
@POST("/.../")
Observable<Response> postLocations(@Body List<Location> locations);
}
vedere la risposta simile con eccezioni di eventi click: http://stackoverflow.com/questions/26154236/how-to-subscribe-to-click-events-so-exceptions-dont-unsubscribe/26229584#26229584 –