异步发布到 Observable/Subject

Asynchronously Publish to Observable/Subject

虽然我认为我已经掌握了如何使用 RxJava 的基础知识,但我在使用观察者模式时遇到了问题。

基本上,我想要做的是拥有一个我可以监视的静态 List 对象,并使用添加到列表中的内容将此数据提交给网络服务。

到目前为止,我的方法只是创建一个 static List<Object> 和一个 static Observable<Object>。这个 observable 是通过 a

创建的
observable = Observable.from(listOfObjects);

然后,我在 .subscribe() 调用中有我的上传逻辑。如果我提前设置了 List,这会起作用,但我想在运行时到处填充它。如果我再次调用 .subscribe() 这仍然有效,但感觉我这样做是在做错事。我以为我可以让现有订阅只对从 observable 发出的任何新项目采取行动,但是当我添加到列表时似乎没有任何反应。

如有任何关于 better/correct 方法的见解,我们将不胜感激。

Observable.from(listOfObjects) 将创建一个新的可观察对象,它将发出列表的每个对象。你也可以写 Observable.just(1, 2, 3, 4) 。这是同一件事。

因此,如果您将对象添加到列表中,Observable 将不会收到通知。

您可以创建一个自定义列表,在新添加的项目中通知您 Observable。您将在主题中看到一个非常接近的解决方案:

但是,您可以使用您的列表并改用 Subject 吗?无需将对象添加到列表中,只需调用 theSubject.onNext 方法即可。

请注意,您只会在添加项目时收到通知。删除项目时不会通知您。如果你愿意,你的 Observable 不应发出添加的项目,而是发出具有关联状态的项目:例如 new Added<Object>(item)new Removed<Object>(item)