异步发布到 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)
。
虽然我认为我已经掌握了如何使用 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)
。