Top Description Constructors Methods
rx.subjects

public abstract Class Subject<T, R>

extends Observable<R>
implements Observer<T>
Class Inheritance
All Implemented Interfaces
rx.Observer
Known Direct Subclasses
rx.subjects.TestSubject, rx.subjects.UnicastSubject, rx.internal.operators.BufferUntilSubscriber, rx.subjects.AsyncSubject, rx.subjects.BehaviorSubject, rx.subjects.PublishSubject, rx.subjects.ReplaySubject, rx.subjects.SerializedSubject
Type Parameters
<T>
the input value type
<R>
the output value type
Imports
rx.*

Represents an object that is both an Observable and an Observer.

Constructor Summary

AccessConstructor and Description
protected
Subject(Observable.OnSubscribe<R> onSubscribe)

Method Summary

Modifier and TypeMethod and Description
public abstract boolean

Returns:

true if there is at least one Observer subscribed to this Subject, false otherwise
hasObservers
()

Indicates whether the Subject has Observers subscribed to it.

public final SerializedSubject<T, R>

Returns:

SerializedSubject wrapping the current Subject
toSerialized
()

Wraps a Subject so that it is safe to call its various on methods from different threads.

Inherited from rx.Observable:
allambambambambambambambambambambWithasObservablebufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbuffercachecachecacheWithInitialCapacitycastcollectcombineLatestcombineLatestcombineLatestcombineLatestcombineLatestcombineLatestcombineLatestcombineLatestcombineLatestcombineLatestcombineLatestDelayErrorcomposeconcatconcatconcatconcatconcatconcatconcatconcatconcatconcatconcatDelayErrorconcatDelayErrorconcatDelayErrorconcatDelayErrorconcatDelayErrorconcatDelayErrorconcatDelayErrorconcatDelayErrorconcatDelayErrorconcatDelayErrorconcatEagerconcatEagerconcatEagerconcatEagerconcatEagerconcatEagerconcatEagerconcatEagerconcatEagerconcatEagerconcatEagerconcatEagerconcatMapconcatMapDelayErrorconcatMapEagerconcatMapEagerconcatMapEagerconcatMapIterableconcatWithcontainscountcountLongcreatecreatecreatecreatedebouncedebouncedebouncedefaultIfEmptydeferdelaydelaydelaydelaydelaySubscriptiondelaySubscriptiondelaySubscriptiondelaySubscriptiondematerializedistinctdistinctdistinctUntilChangeddistinctUntilChangeddistinctUntilChangeddoAfterTerminatedoOnCompleteddoOnEachdoOnEachdoOnErrordoOnNextdoOnRequestdoOnSubscribedoOnTerminatedoOnUnsubscribeelementAtelementAtOrDefaultemptyerrorexistsfilterfinallyDofirstfirstfirstOrDefaultfirstOrDefaultflatMapflatMapflatMapflatMapflatMapflatMapflatMapCompletableflatMapCompletableflatMapCompletableflatMapIterableflatMapIterableflatMapIterableflatMapIterableflatMapSingleflatMapSingleflatMapSingleforEachforEachforEachfromfromfromfromfromfromCallablegroupBygroupBygroupBygroupBygroupJoinignoreElementsintervalintervalintervalintervalisEmptyjoinjustjustjustjustjustjustjustjustjustjustlastlastlastOrDefaultlastOrDefaultliftlimitmapmaterializemergemergemergemergemergemergemergemergemergemergemergemergemergemergemergeDelayErrormergeDelayErrormergeDelayErrormergeDelayErrormergeDelayErrormergeDelayErrormergeDelayErrormergeDelayErrormergeDelayErrormergeDelayErrormergeDelayErrormergeDelayErrormergeWithnestneverobserveOnobserveOnobserveOnobserveOnofTypeonBackpressureBufferonBackpressureBufferonBackpressureBufferonBackpressureBufferonBackpressureDroponBackpressureDroponBackpressureLatestonErrorResumeNextonErrorResumeNextonErrorReturnonExceptionResumeNextonTerminateDetachpublishpublishrangerangerebatchRequestsreducereducerepeatrepeatrepeatrepeatrepeatWhenrepeatWhenreplayreplayreplayreplayreplayreplayreplayreplayreplayreplayreplayreplayreplayreplayreplayreplayretryretryretryretryWhenretryWhensamplesamplesamplescanscansequenceEqualsequenceEqualserializesharesinglesinglesingleOrDefaultsingleOrDefaultskipskipskipskipLastskipLastskipLastskipUntilskipWhilesortedsortedstartWithstartWithstartWithstartWithstartWithstartWithstartWithstartWithstartWithstartWithstartWithsubscribesubscribesubscribesubscribesubscribesubscribesubscribeOnsubscribeOnswitchIfEmptyswitchMapswitchMapDelayErrorswitchOnNextswitchOnNextDelayErrortaketaketaketakeFirsttakeLasttakeLasttakeLasttakeLasttakeLasttakeLastBuffertakeLastBuffertakeLastBuffertakeLastBuffertakeLastBuffertakeUntiltakeUntiltakeWhiletesttestthrottleFirstthrottleFirstthrottleLastthrottleLastthrottleWithTimeoutthrottleWithTimeouttimeIntervaltimeIntervaltimeouttimeouttimeouttimeouttimeouttimeouttimeouttimeouttimertimertimertimertimestamptimestamptotoBlockingtoCompletabletoListtoMaptoMaptoMaptoMultimaptoMultimaptoMultimaptoMultimaptoSingletoSortedListtoSortedListtoSortedListtoSortedListunsafeCreateunsafeSubscribeunsubscribeOnusingusingwindowwindowwindowwindowwindowwindowwindowwindowwindowwindowwindowwindowwithLatestFromwithLatestFromwithLatestFromwithLatestFromwithLatestFromwithLatestFromwithLatestFromwithLatestFromwithLatestFromwithLatestFromzipzipzipzipzipzipzipzipzipzipzipzipWithzipWith

Constructor Detail

Subjectback to summary
protected Subject(Observable.OnSubscribe<R> onSubscribe)

Method Detail

hasObserversback to summary
public abstract boolean hasObservers()

Indicates whether the Subject has Observers subscribed to it.

Returns:boolean

true if there is at least one Observer subscribed to this Subject, false otherwise

toSerializedback to summary
public final SerializedSubject<T, R> toSerialized()

Wraps a Subject so that it is safe to call its various on methods from different threads.

When you use an ordinary Subject as a Subscriber, you must take care not to call its Subscriber#onNext method (or its other on methods) from multiple threads, as this could lead to non-serialized calls, which violates the Observable contract and creates an ambiguity in the resulting Subject.

To protect a Subject from this danger, you can convert it into a SerializedSubject with code like the following:

mySafeSubject = myUnsafeSubject.toSerialized();
Returns:SerializedSubject<T, R>

SerializedSubject wrapping the current Subject