- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 CompositeSubscription ,并在那里添加带有 ReplaySubject 的 Subscription
CompositeSubscription compositeSubscription = new CompositeSubscription();
ReplaySubject subject = ReplaySubject.create();
compositeSubscription.add(
manager.getAllContacts()
.toList()
.doOnNext(new Action1<List<Person>>() {
@Override
public void call(List<Person> persons) {
allPersons = persons;
Log.e(TAG, "BookContacts: " + "allPersons = " + allPersons.size());
setupViewPager();
}
})
.subscribe(subject));
然后我用这个 ReplaySubject 添加第二个订阅
compositeSubscription.add(Observable.combineLatest(subject,
(PublishSubject<List<CustomUser>>) execute(
manager.getDigitsContacts()),
new Func2<List<Person>, List<CustomUser>, Object>() {
@Override
public Object call(List<Person> persons, List<CustomUser> customUsers) {
//... my code with persons and customUsers...
return null;
}
})
.subscribe());
代码正常运行,在完成 ReplaySubject hasCompleted = true 之后。
但是当我尝试添加第三个 Subscription 时,它不会调用“call()”方法
compositeSubscription.add(Observable.combineLatest(subject,
(PublishSubject<List<CustomUser>>) execute(
manager.getFacebookContacts()), //<-----manager.getFacebookContacts() is run, but doesn't call call() method
new Func2<List<Person>, List<CustomUser>, Object>() {
@Override
public Object call(List<Person> persons, List<CustomUser> customUsers) {
//...this method is not called after "manager.getFacebookContacts()"
return null;
}
})
.subscribeOn(Schedulers.newThread())
.subscribe());
如何解决?...因为如果我同时添加订阅,它就可以正常工作。
最佳答案
能否请您将错误回调添加到.subscribe()
?我的猜测是第三次 ReplaySubject
溢出了 combineLatest 的缓冲区。您应该使用 .replay().autoConnect(0)
CompositeSubscription compositeSubscription = new CompositeSubscription();
Observable<List<Person>> persons = manager.getAllContacts()
.toList()
.doOnNext(new Action1<List<Person>>() {
@Override
public void call(List<Person> persons) {
allPersons = persons;
Log.e(TAG, "BookContacts: " + "allPersons = " + allPersons.size());
setupViewPager();
}
}).replay().autoConnect(0, s -> compositeSubscription.add(s));
然后使用persons
代替subject
关于java - 如何使用 ReplaySubject 重新运行 CompositeSubscription?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33611142/
我有 CompositeSubscription ,并在那里添加带有 ReplaySubject 的 Subscription CompositeSubscription compositeSubs
我有一个 Android 项目,我在其中使用了 rxjava 和 rxAndroid。我突然开始遇到崩溃 "NoClassDefFoundError: rx.subscriptions.Composi
我想为我的 Presenter 类创建一个测试,但我遇到了 Presenter 本身内部的 CompositeSubscription 实例的问题。运行测试时出现此错误: java.lang.Null
我一直在玩 Kotlin/RxJava,并尝试创建一个扩展方法来将 Subscription 添加到 CompositeSubscription,其工作方式如下: search.subscribe {
我是一名优秀的程序员,十分优秀!