Deb*_*ebu 6 java android rx-java
我们可以检测是否使用RxJava更改了类成员值?在类中说有一个变量var,现在只要var的值使用RxJava改变就可以得到通知.
Sia*_*oli 16
你可以使用这样的东西:
private final BehaviorSubject<Integer> subject = BehaviorSubject.create();
private Integer value=0;
public Observable<Integer> getUiElementAsObservable() {
return subject;
}
public void updateUiElementValue(final Integer valueAdded) {
synchronized (value) {
if (value + valueAdded < 0)
return;
value += valueAdded;
subject.onNext(value);
}
}
Run Code Online (Sandbox Code Playgroud)
并订阅它像这样:
compositeSubscription.add(yourClass.getUiElementAsObservable()
.subscribe(new Action1<Integer>() {
@Override
public void call(Integer userMessage) {
setViews(userMessage,true);
}
}));
Run Code Online (Sandbox Code Playgroud)
你必须为你想要订阅他们的更改的所有变量创建setter,如果应用了更改,则调用onNext.
********更新
当观察者订阅BehaviorSubject时,它首先发出源Observable最近发出的项
你可以在这里看到其他类型的主题:http://reactivex.io/documentation/subject.html
一些有用的链接:关于反应式编程:https
://gist.github.com/staltz/868e7e9bc2a7b8c1f754和关于rxjava:https://youtu.be/k3D0cWyNno4
小智 5
http://rxmarbles.com/#distinctUntilChanged
Observable.just("A", "B", "B", "A", "C", "A", "A", "D")
.distinctUntilChanged()
.subscribe(abc -> Log.d("RXJAVA", abc));
Run Code Online (Sandbox Code Playgroud)
A
B
A
C
A
D
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6506 次 |
| 最近记录: |