我刚开始使用rxjava而且卡住了。也许我没有以正确的方式使用rxjava,但我需要在创建项目后将其添加到Observable
。所以我理解你可以只调用Observable.just("Some", "Items")
并且订阅者将收到它们,但是如果我有一个异步任务并且我需要在任务完成后再添加一些项目呢?我找不到像Observable.addItems("Some", "More", "Items")
答案 0 :(得分:31)
您可能需要的是主题 - http://reactivex.io/documentation/subject.html
这是 Observer 和 Observable 的对象,因此您可以订阅它并发出新项目。例如:
PublishSubject<String> subject = PublishSubject.create();
subject.subscribe(System.out::println);
subject.onNext("Item1");
subject.onNext("Item2");
答案 1 :(得分:1)
值得注意的是PublishSubject
不会缓存项目。例如,如果以上代码如下,则由于主题尚未订阅,因此不会打印Item1
。
PublishSubject<String> subject = PublishSubject.create();
subject.onNext("Item1");
subject.subscribe(System.out::println);
subject.onNext("Item2");
使用ReplaySubject
进行缓存。
阅读会很有帮助
this