T - the type of items the Subscriber expects to observe
public abstract class Subscriber<T> extends Objectimplements Observer <T>, Subscription
After a Subscriber calls an Observable's subscribe method, the Observable calls the Subscriber's Observer method to emit items. A well-behaved Observable will call a Subscriber's Observer method exactly once or the Subscriber's Observer method exactly once.
| Modifier | Constructor and Description |
|---|---|
protected |
Subscriber()
|
protected |
Subscriber(Subscriber
Construct a Subscriber by using another Subscriber for backpressure and for holding the subscription list (when
this.add(sub) is called this will in fact call
subscriber.add(sub)).
|
protected |
Subscriber(Subscriber
Construct a Subscriber by using another Subscriber for backpressure and optionally for holding the subscription list (if
shareSubscriptions is
true then when
this.add(sub) is called this will in fact call
subscriber.add(sub)).
|
| Modifier and Type | Method and Description |
|---|---|
void |
add(Subscription
Adds a
Subscription to this Subscriber's list of subscriptions if this list is not marked as unsubscribed.
|
boolean |
isUnsubscribed()
Indicates whether this Subscriber has unsubscribed from its list of subscriptions.
|
void |
onStart()
This method is invoked when the Subscriber and Observable have been connected but the Observable has not yet begun to emit items or send notifications to the Subscriber.
|
protected void |
request(long n)
Request a certain maximum number of emitted items from the Observable this Subscriber is subscribed to.
|
void |
setProducer(Producer
If other subscriber is set (by calling constructor
Subscriber(Subscriber) or
Subscriber(Subscriber, boolean)) then this method calls
setProducer on the other subscriber.
|
void |
unsubscribe()
Stops the receipt of notifications on the
Subscriber that was registered when this Subscription was received.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitonCompleted, onError, onNextprotected Subscriber()
protected Subscriber(Subscriber<?> subscriber)
this.add(sub) is called this will in fact call
subscriber.add(sub)).
subscriber - the other Subscriber
protected Subscriber(Subscriber<?> subscriber, boolean shareSubscriptions)
shareSubscriptions is
true then when
this.add(sub) is called this will in fact call
subscriber.add(sub)).
To retain the chaining of subscribers when setting shareSubscriptions to false, add the created instance to subscriber via add(rx.Subscription).
subscriber - the other Subscriber
shareSubscriptions -
true to share the subscription list in
subscriber with this instance
public final void add(Subscriptions)
Subscription to this Subscriber's list of subscriptions if this list is not marked as unsubscribed. If the list
is marked as unsubscribed,
add will indicate this by explicitly unsubscribing the new
Subscription as well.
s - the
Subscription to add
public final void unsubscribe()
Subscription
Subscriber that was registered when this Subscription was received.
This allows unregistering an Subscriber before it has finished receiving all events (i.e. before onCompleted is called).
public final boolean isUnsubscribed()
isUnsubscribed in interface
Subscription
true if this Subscriber has unsubscribed from its subscriptions,
false otherwise
public void onStart()
protected final void request(long n)
Long.MAX_VALUE to this method.
Requests are additive but if a sequence of requests totals more than Long.MAX_VALUE then Long.MAX_VALUE requests will be actioned and the extras may be ignored. Arriving at Long.MAX_VALUE by addition of requests cannot be assumed to disable backpressure. For example, the code below may result in Long.MAX_VALUE requests being actioned only.
request(100); request(Long.MAX_VALUE-1);
n - the maximum number of items you want the Observable to emit to the Subscriber at this time, or
Long.MAX_VALUE if you want the Observable to emit items at its own pace
IllegalArgumentException - if
n is negative
public void setProducer(Producerp)
Subscriber(Subscriber) or
Subscriber(Subscriber, boolean)) then this method calls
setProducer on the other subscriber. If the other subscriber is not set and no requests have been made to this subscriber then
p.request(Long.MAX_VALUE) is called. If the other subscriber is not set and some requests have been made to this subscriber then
p.request(n) is called where n is the accumulated requests to this subscriber.
p - producer to be used by this subscriber or the other subscriber (or recursively its other subscriber) to make requests from