异步发布到Observable / Subject

时间:2015-03-03 20:36:47

标签: rx-java rx-android

虽然我认为我已经掌握了如何使用RxJava的基础知识,但我在使用Observer模式时遇到了麻烦。

基本上,我想要做的是拥有一个可以监控的静态List对象,并使用列表中的附加内容将这些数据提交给Web服务。

到目前为止,我的方法只需创建一个static List<Object>和一个static Observable<Object>。只需执行

即可创建此可观察对象
observable = Observable.from(listOfObjects);

然后,我在.subscribe()电话中有我的上传逻辑。如果我提前设置了List,那么这可以工作,但我想在运行时在这里和那里填充它。如果我再次呼叫.subscribe(),这仍然有效,但感觉我做错了。我以为我可以让现有的订阅只对从observable发出的任何新项目进行操作,但是当我添加到列表时似乎没有发生任何事情。

对于更好/正确方法的任何见解表示赞赏。

1 个答案:

答案 0 :(得分:2)

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

因此,如果您在列表中添加对象,则会通知Observable

您可以创建一个自定义列表,通过新添加的项目通知您Observable。您将看到一个非常接近的主题解决方案:How can I create an Observer over a dynamic list in RxJava?

但是,您可以乘坐列表并使用Subject代替?不要将对象添加到列表中,只需调用theSubject.onNext方法。

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