RxJava – 观察可能始终发生变化的数据

我正试图跳上反应潮流,但在阅读并经历了很多例子后,我仍然没有找到我正在寻找的东西。

我有一个模型对象,可能会在应用程序的生命周期中的任何时间发生变化。
更改可能来自更新它的特定请求(来自服务器,数据库等),也可能因应用程序中触发的事件而更新。

我的问题是如何创建这样一个对象的Observable ,以及如何在发生变化时不断更新订阅者?

从我到目前为止看到的,我可以像这样创建observable:

 Observable.create(new Observable.OnSubscribe() { @Override public void call(final Subscriber subscriber) { subscriber.onNext(MyModel instance); } }); 

我在这里缺少的是:

  1. 我不想发出不同的值( MyModel实例),但只是想让订阅者知道相同的实例(他们订阅的实例)已经改变。

  2. 如果我理解正确,那么每当新订户注册时call方法,但这不是我需要的,我需要在有更新时才采取行动然后我想通知所有订户。

我很有可能把这一切都搞错了,这就是为什么我很高兴能够理解如何用RxJava来满足我的需求。

谢谢。

我认为做这样的事情的最佳选择是主题 。 所以你可以这样:

 public static class MyModel { private PublishSubject changeObservable = PublishSubject.create(); private String field1; public String getField1() { return field1; } public void setField1(String field1) { this.field1 = field1; changeObservable.onNext(this); } public Observable getModelChanges() { return changeObservable; } @Override public String toString() { return "MyModel{" + "field1='" + field1 + '\'' + '}'; } } public static void main(String[] args) { MyModel myModel = new MyModel(); myModel.getModelChanges() .subscribe(System.out::println); myModel.setField1("1"); myModel.setField1("2"); myModel.setField1("3"); } 

因此,模型中的所有设置器都会通知模型中的某些内容已更改,并且所有订阅者都将获取该数据。