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
使其具有初始值。
根据 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
使其具有初始值。