RxJava 中的 MutableLiveData 等价物是什么?

What is the MutableLiveData equivalent in RxJava?

根据 LiveData Android 文档中的以下示例,RxJava 2 的等价物是什么?

我们当然可以使用 publish()refcount()replay() 的组合来实现 MutableLiveData 可观察行为的核心。也就是说,mCurrentName.setValue() 的类似对应物是什么,因为它涉及检测变化并发出相应的事件?

public class NameViewModel extends ViewModel {

// Create a LiveData with a String
private MutableLiveData<String> mCurrentName;

    public MutableLiveData<String> getCurrentName() {
        if (mCurrentName == null) {
            mCurrentName = new MutableLiveData<String>();
        }
        return mCurrentName;
    }

// Rest of the ViewModel...
}

您可以在某些级别上复制 BehaviorSubject 的效果。

如果你只想通知观察者:

BehaviorSubject<Integer> subject = BehaviorSubject.create();

subject.subscribe(System.out::println);

subject.onNext(1);

如果你想始终在主线程上通知观察者:

BehaviorSubject<Integer> subject = BehaviorSubject.create();

Observable<Integer> observable = subject.observeOn(AndroidSchedulers.mainThread());

observable.subscribe(System.out::println);

subject.onNext(1);

如果您希望能够从任何线程发出信号:

Subject<Integer> subject = BehaviorSubject.<Integer>create().toSerialized();

Observable<Integer> observable = subject.observeOn(AndroidSchedulers.mainThread());

observable.subscribe(System.out::println);

subject.onNext(1);

使用createDefault使其具有初始值。