虽然我认为我已经掌握了如何使用RxJava的基础知识,但我在使用Observer模式时遇到了麻烦。
基本上,我想要做的是拥有一个可以监控的静态List
对象,并使用列表中的附加内容将这些数据提交给Web服务。
到目前为止,我的方法只需创建一个static List<Object>
和一个static Observable<Object>
。只需执行
observable = Observable.from(listOfObjects);
然后,我在.subscribe()
电话中有我的上传逻辑。如果我提前设置了List
,那么这可以工作,但我想在运行时在这里和那里填充它。如果我再次呼叫.subscribe()
,这仍然有效,但感觉我做错了。我以为我可以让现有的订阅只对从observable发出的任何新项目进行操作,但是当我添加到列表时似乎没有发生任何事情。
对于更好/正确方法的任何见解表示赞赏。
答案 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)
。