Search code examples
androidtimeoutrx-java2

How to set TimeOut for complete Observer in RXjava - Android?


I have many request merged in Observable, and I need a Timeout Not for every emission but for complete observable in RXjava. Is it Possible??

            Observable
            .merge(listOfObservables).subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new DisposableObserver<Response>() {

                @Override
                public void onNext(@io.reactivex.annotations.NonNull Response response) {
                    
                }

                @Override
                public void onError(@io.reactivex.annotations.NonNull Throwable e) {
                  
                }

                @Override
                public void onComplete() {
                  
                }
            });

Solution

  • You could use takeUntil with a delayed error:

    Observable
    .merge(listOfObservables)
    .subscribeOn(Schedulers.io())
    .takeUntil(Observable.error(new TimeoutException()).delay(5, TimeUnit.MINUTES, true))
    .observeOn(AndroidSchedulers.mainThread())