java - RXjava 实现对象更新的可观察对象

标签 java rx-java

如何将可观察对象添加到 Integer 对象,以便在每次对象更新时收到通知?在这种情况下,整数 = 0;我希望每次添加示例 1 时都能收到通知。最初我只想记录事件。这是我目前所拥有的,但我被卡住了。

代码:

Subscriber<Integer> num = new Subscriber<Integer>() {
        @Override
        public void onNext(Integer num) { Log.d("RX", num.toString()); }

        @Override
        public void onError(Throwable e) { Log.d("RX", "error"); }

        @Override
        public void onCompleted() { Log.d("RX", "completed"); }
    };

    Observable.just(number)
            /*.doOnNext(new Action1<Integer>() {
                @Override
                public void call(Integer integer) {
                    Log.d("RX", "Updated integer" + integer.toString());
                }
            })*/
            /*.flatMap(new Func1<Integer, Observable<?>>() {
                @Override
                public Observable<?> call(Integer integer) {
                    Log.d("RX", "Updated integer" + integer.toString());
                    return Observable.just(number);
                }
            })*/
            .subscribe(num);

最佳答案

在不知道您想要实现什么的情况下,很难给出最佳答案,但您可以按照以下方式实现一个 ObservableInteger 类:

public class ObservableInteger {

    private Integer value;
    private PublishSubject<Integer> subject = PublishSubject.create();

    public Integer getValue() {
        return value;
    }

    public void setValue(Integer value) {
        this.value = value;
        subject.onNext(value);
    }

    public Observable<Integer> getObservable() {
        return subject.asObservable();
    }
}

然后您就可以订阅了:

    ObservableInteger obInt = new ObservableInteger();

    Subscription s = obInt
            .getObservable()
            .subscribe(
                    integer -> {
                        // each time a new value is set
                        // it will be emitted here
                    },
                    Throwable::printStackTrace
            );

关于java - RXjava 实现对象更新的可观察对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41707043/

相关文章:

java - 将 CharSequence 转换为 Float

java - 连续订阅和取消订阅 Observable 以进行 BLE 扫描

java - 使用 Apache Camel AdviceWith 和 weaveById 进行测试

java - 纯线程安全的 Java 类

java - 在 setContentView(R.layout.activity_home_screen) 处获取 NullPointerException;

java - 循环已经疯了

java - Aspectj "after throwing"- 监视特定异常

java - 无法验证来自 RxJava 订阅者的模拟方法调用

rx-java - RxJava2 TestObserver类-getOnNextEvent与TestSubscriber类相似的地方在哪里?

java - 当每个元素上的操作产生不同的结果计数/持续时间时,保持初始可迭代排序顺序稳定