Class BehaviorSubject<T>
- java.lang.Object
-
- rx.Observable<R>
-
- rx.subjects.Subject<T,T>
-
- rx.subjects.BehaviorSubject<T>
-
- Type Parameters:
T
- the type of item expected to be observed by the Subject
- All Implemented Interfaces:
Observer<T>
public final class BehaviorSubject<T> extends Subject<T,T>
Subject that emits the most recent item it has observed and all subsequent observed items to each subscribedObserver
.Example usage:
// observer will receive all events. BehaviorSubject<Object> subject = BehaviorSubject.create("default"); subject.subscribe(observer); subject.onNext("one"); subject.onNext("two"); subject.onNext("three"); // observer will receive the "one", "two" and "three" events, but not "zero" BehaviorSubject<Object> subject = BehaviorSubject.create("default"); subject.onNext("zero"); subject.onNext("one"); subject.subscribe(observer); subject.onNext("two"); subject.onNext("three"); // observer will receive only onCompleted BehaviorSubject<Object> subject = BehaviorSubject.create("default"); subject.onNext("zero"); subject.onNext("one"); subject.onCompleted(); subject.subscribe(observer); // observer will receive only onError BehaviorSubject<Object> subject = BehaviorSubject.create("default"); subject.onNext("zero"); subject.onNext("one"); subject.onError(new RuntimeException("error")); subject.subscribe(observer);
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class rx.Observable
Observable.OnSubscribe<T>, Observable.Operator<R,T>, Observable.Transformer<T,R>
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.Object[]
EMPTY_ARRAY
An empty array to trigger getValues() to return a new array.private NotificationLite<T>
nl
private SubjectSubscriptionManager<T>
state
-
Constructor Summary
Constructors Modifier Constructor Description protected
BehaviorSubject(Observable.OnSubscribe<T> onSubscribe, SubjectSubscriptionManager<T> state)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static <T> BehaviorSubject<T>
create()
Creates aBehaviorSubject
without a default item.static <T> BehaviorSubject<T>
create(T defaultValue)
Creates aBehaviorSubject
that emits the last item it observed and all subsequent items to eachObserver
that subscribes to it.private static <T> BehaviorSubject<T>
create(T defaultValue, boolean hasDefault)
java.lang.Throwable
getThrowable()
Returns the Throwable that terminated the Subject.T
getValue()
Returns the current value of the Subject if there is such a value and the subject hasn't terminated yet.java.lang.Object[]
getValues()
Returns a snapshot of the currently buffered non-terminal events.T[]
getValues(T[] a)
Returns a snapshot of the currently buffered non-terminal events into the provideda
array or creates a new array if it has not enough capacity.boolean
hasCompleted()
Check if the Subject has terminated normally.boolean
hasObservers()
boolean
hasThrowable()
Check if the Subject has terminated with an exception.boolean
hasValue()
Check if the Subject has a value.void
onCompleted()
Notifies the Observer that theObservable
has finished sending push-based notifications.void
onError(java.lang.Throwable e)
Notifies the Observer that theObservable
has experienced an error condition.void
onNext(T v)
Provides the Observer with a new item to observe.(package private) int
subscriberCount()
-
Methods inherited from class rx.subjects.Subject
toSerialized
-
Methods inherited from class rx.Observable
all, amb, amb, amb, amb, amb, amb, amb, amb, amb, ambWith, asObservable, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, cache, cache, cacheWithInitialCapacity, cast, collect, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatestDelayError, compose, concat, concat, concat, concat, concat, concat, concat, concat, concat, concatDelayError, concatDelayError, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatMap, concatMapDelayError, concatMapEager, concatMapEager, concatMapEager, concatMapIterable, concatWith, contains, count, countLong, create, create, create, debounce, debounce, debounce, defaultIfEmpty, defer, delay, delay, delay, delay, delaySubscription, delaySubscription, delaySubscription, delaySubscription, dematerialize, distinct, distinct, distinctUntilChanged, distinctUntilChanged, distinctUntilChanged, doAfterTerminate, doOnCompleted, doOnEach, doOnEach, doOnError, doOnNext, doOnRequest, doOnSubscribe, doOnTerminate, doOnUnsubscribe, elementAt, elementAtOrDefault, empty, error, exists, extend, filter, finallyDo, first, first, firstOrDefault, firstOrDefault, flatMap, flatMap, flatMap, flatMap, flatMap, flatMap, flatMapIterable, flatMapIterable, flatMapIterable, flatMapIterable, forEach, forEach, forEach, from, from, from, from, from, fromAsync, fromCallable, groupBy, groupBy, groupBy, groupJoin, ignoreElements, interval, interval, interval, interval, isEmpty, join, just, just, just, just, just, just, just, just, just, just, last, last, lastOrDefault, lastOrDefault, lift, limit, map, materialize, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeWith, nest, never, observeOn, observeOn, observeOn, observeOn, ofType, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureDrop, onBackpressureDrop, onBackpressureLatest, onErrorResumeNext, onErrorResumeNext, onErrorReturn, onExceptionResumeNext, onTerminateDetach, publish, publish, range, range, rebatchRequests, reduce, reduce, repeat, repeat, repeat, repeat, repeatWhen, repeatWhen, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, retry, retry, retry, retryWhen, retryWhen, sample, sample, sample, scan, scan, sequenceEqual, sequenceEqual, serialize, share, single, single, singleOrDefault, singleOrDefault, skip, skip, skip, skipLast, skipLast, skipLast, skipUntil, skipWhile, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, subscribe, subscribe, subscribe, subscribe, subscribe, subscribe, subscribeOn, switchIfEmpty, switchMap, switchMapDelayError, switchOnNext, switchOnNextDelayError, take, take, take, takeFirst, takeLast, takeLast, takeLast, takeLast, takeLast, takeLastBuffer, takeLastBuffer, takeLastBuffer, takeLastBuffer, takeLastBuffer, takeUntil, takeUntil, takeWhile, throttleFirst, throttleFirst, throttleLast, throttleLast, throttleWithTimeout, throttleWithTimeout, timeInterval, timeInterval, timeout, timeout, timeout, timeout, timeout, timeout, timeout, timeout, timer, timer, timer, timer, timestamp, timestamp, toBlocking, toCompletable, toList, toMap, toMap, toMap, toMultimap, toMultimap, toMultimap, toMultimap, toSingle, toSortedList, toSortedList, toSortedList, toSortedList, unsafeSubscribe, unsubscribeOn, using, using, window, window, window, window, window, window, window, window, window, window, window, window, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zipWith, zipWith
-
-
-
-
Field Detail
-
EMPTY_ARRAY
private static final java.lang.Object[] EMPTY_ARRAY
An empty array to trigger getValues() to return a new array.
-
state
private final SubjectSubscriptionManager<T> state
-
nl
private final NotificationLite<T> nl
-
-
Constructor Detail
-
BehaviorSubject
protected BehaviorSubject(Observable.OnSubscribe<T> onSubscribe, SubjectSubscriptionManager<T> state)
-
-
Method Detail
-
create
public static <T> BehaviorSubject<T> create()
Creates aBehaviorSubject
without a default item.- Type Parameters:
T
- the type of item the Subject will emit- Returns:
- the constructed
BehaviorSubject
-
create
public static <T> BehaviorSubject<T> create(T defaultValue)
Creates aBehaviorSubject
that emits the last item it observed and all subsequent items to eachObserver
that subscribes to it.- Type Parameters:
T
- the type of item the Subject will emit- Parameters:
defaultValue
- the item that will be emitted first to anyObserver
as long as theBehaviorSubject
has not yet observed any items from its sourceObservable
- Returns:
- the constructed
BehaviorSubject
-
create
private static <T> BehaviorSubject<T> create(T defaultValue, boolean hasDefault)
-
onCompleted
public void onCompleted()
Description copied from interface:Observer
Notifies the Observer that theObservable
has finished sending push-based notifications.The
Observable
will not call this method if it callsObserver.onError(java.lang.Throwable)
.
-
onError
public void onError(java.lang.Throwable e)
Description copied from interface:Observer
Notifies the Observer that theObservable
has experienced an error condition.If the
Observable
calls this method, it will not thereafter callObserver.onNext(T)
orObserver.onCompleted()
.- Parameters:
e
- the exception encountered by the Observable
-
onNext
public void onNext(T v)
Description copied from interface:Observer
Provides the Observer with a new item to observe.The
Observable
may call this method 0 or more times.The
Observable
will not call this method again after it calls eitherObserver.onCompleted()
orObserver.onError(java.lang.Throwable)
.- Parameters:
v
- the item emitted by the Observable
-
subscriberCount
int subscriberCount()
-
hasObservers
public boolean hasObservers()
Description copied from class:Subject
- Specified by:
hasObservers
in classSubject<T,T>
- Returns:
- true if there is at least one Observer subscribed to this Subject, false otherwise
-
hasValue
@Beta public boolean hasValue()
Check if the Subject has a value.Use the
getValue()
method to retrieve such a value.Note that unless
hasCompleted()
orhasThrowable()
returns true, the value retrieved bygetValue()
may get outdated.- Returns:
- true if and only if the subject has some value and hasn't terminated yet.
-
hasThrowable
@Beta public boolean hasThrowable()
Check if the Subject has terminated with an exception.- Returns:
- true if the subject has received a throwable through
onError
.
-
hasCompleted
@Beta public boolean hasCompleted()
Check if the Subject has terminated normally.- Returns:
- true if the subject completed normally via
onCompleted()
-
getValue
@Beta public T getValue()
Returns the current value of the Subject if there is such a value and the subject hasn't terminated yet.The method can return
null
for various reasons. UsehasValue()
,hasThrowable()
andhasCompleted()
to determine if suchnull
is a valid value, there was an exception or the Subject terminated (with or without receiving any value).- Returns:
- the current value or
null
if the Subject doesn't have a value, has terminated or has an actualnull
as a valid value.
-
getThrowable
@Beta public java.lang.Throwable getThrowable()
Returns the Throwable that terminated the Subject.- Returns:
- the Throwable that terminated the Subject or
null
if the subject hasn't terminated yet or it terminated normally.
-
getValues
@Beta public T[] getValues(T[] a)
Returns a snapshot of the currently buffered non-terminal events into the provideda
array or creates a new array if it has not enough capacity.- Parameters:
a
- the array to fill in- Returns:
- the array
a
if it had enough capacity or a new array containing the available values
-
getValues
@Beta public java.lang.Object[] getValues()
Returns a snapshot of the currently buffered non-terminal events.The operation is threadsafe.
- Returns:
- a snapshot of the currently buffered non-terminal events.
- Since:
- (If this graduates from being an Experimental class method, replace this parenthetical with the release number)
-
-