我需要做一件简单的事情:当我的字段,前一个状态为null,变为非null时,执行一些事情。如果事先不是null,则提交也应该执行一次。为此我创建了这段代码:
Observable.just(object).filter(new Func1<Object, Boolean>() {
@Override
public Boolean call(Object o) {
return o != null;
}
}).subscribe(new Action1<Object>() {
@Override
public void call(Object o) {
Toast.makeText(MainActivity.this, "Object is non-null", Toast.LENGTH_SHORT).show();
}
});
虽然不起作用。我该怎么办?
非常感谢任何帮助。
答案 0 :(得分:1)
您可能希望使用BehaviorSubject
来存储值,并使用空检查应用distinctUntilChanged
来对更改做出反应:
BehaviorSubject<Object> bs = BehaviorSubject.create();
bs.distinctUntilChanged(v -> v != null)
.doOnNext(v -> System.out.println(v))
.subscribe();
bs.onNext(1);
bs.onNext(2);
bs.onNext(null);
bs.onNext(null);
bs.onNext(3);