Class DefaultSubscriber<T>

java.lang.Object
io.reactivex.rxjava4.subscribers.DefaultSubscriber<T>
Type Parameters:
T - the value type

Example

Flowable.range(1, 5)
    .subscribe(new DefaultSubscriber<Integer>() {
        @Override public void onStart() {
            System.out.println("Start!");
            request(1);
        }
        @Override public void onNext(Integer t) {
            if (t == 3) {
                cancel();
            }
            System.out.println(t);
            request(1);
        }
        @Override public void onError(Throwable t) {
            t.printStackTrace();
        }
        @Override public void onComplete() {
            System.out.println("Done!");
        }
    });
All Implemented Interfaces:
FlowableSubscriber<T>, Flow.Subscriber<T>

public abstract class DefaultSubscriber<T> extends Object implements FlowableSubscriber<T>
Abstract base implementation of a Subscriber with support for requesting via #request(long), cancelling via via #cancel() (both synchronously) and calls #onStart() when the subscription happens.

All pre-implemented final methods are thread-safe.

The default #onStart() requests Long.MAX_VALUE by default. Override the method to request a custom positive amount.

Note that calling #request(long) from #onStart() may trigger an immediate, asynchronous emission of data to Flow.Subscriber.onNext(Object). Make sure all initialization happens before the call to request() in onStart(). Calling #request(long) inside Flow.Subscriber.onNext(Object) can happen at any time because by design, onNext calls from upstream are non-reentrant and non-overlapping.

Use the protected #cancel() to cancel the sequence from within an onNext implementation.

Like all other consumers, DefaultSubscriber can be subscribed only once. Any subsequent attempt to subscribe it to a new source will yield an IllegalStateException with message "It is not allowed to subscribe with a(n) <class name> multiple times.".

Implementation of #onStart(), Flow.Subscriber.onNext(Object), Flow.Subscriber.onError(Throwable) and Flow.Subscriber.onComplete() are not allowed to throw any unchecked exceptions. If for some reason this can't be avoided, use Flowable.safeSubscribe(java.util.concurrent.Flow.Subscriber) instead of the standard subscribe() method.

  • Constructor Details

    • DefaultSubscriber

      public DefaultSubscriber()
  • Method Details