简体   繁体   English

rxjava PublishSubject 第二次不订阅

[英]rxjava PublishSubject second time not subscribe

private static PublishSubject<UserBean> mPublishSubject;
private static AtomicBoolean mRefreshing = new AtomicBoolean(false);
private static Observable<UserBean> mTokenObservable;

public Observable<UserBean> getNetTokenLocked() {
    if (mRefreshing.compareAndSet(false, true)) {
        Log.e(TAG, "first    request");
        mTokenObservable.subscribe(mPublishSubject);
    } else {
        Log.e(TAG, "else  wait back");
    }
    return mPublishSubject;                         //second didn't return  
}

return mPublishSubject;返回 mPublishSubject; <- I want to be able to give me the previous data for the second time <-我希望能够第二次给我以前的数据

Publish Subject emits all the subsequent items of the source Observable at the time of subscription. Publish Subject在订阅时发出源 Observable 的所有后续项。 If you want to emit all the items of the source Observable, regardless of when the subscriber subscribes, use Replay Subject.如果您想发出源 Observable 的所有项目,无论订阅者何时订阅,请使用 Replay Subject。

PublishSubject<Integer> source = PublishSubject.create();

// It will get 1, 2, 3, 4 and onComplete
source.subscribe(getFirstObserver()); 

source.onNext(1);
source.onNext(2);
source.onNext(3);

// It will get 4 and onComplete for second observer also.
source.subscribe(getSecondObserver());

source.onNext(4);
source.onComplete();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM