根据下面来自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
使其具有初始值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句