Это мой обратный вызов:
private class ItemsCallback implements SingleObserver<List<ContentItem>> {
@Override
public void onSubscribe(Disposable d) {
disposer.addDisposable(d);
}
@Override
public void onSuccess(List<ContentItem> contentItems) {
//Not relevant
}
@Override
public void onError(Throwable e) {
//Not relevant
}
}
Мой метод addDisposable просто добавит одноразовое в составное одноразовое:
public class Disposer implements LifecycleObserver {
private CompositeDisposable disposables;
public Disposer () {
disposables = new CompositeDisposable();
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void destroy() {
disposables.dispose();
}
protected void addDisposable(@Nullable Disposable disposable) {
if (disposable != null) {
disposables.add(disposable);
}
}
Проблема заключается в том, что onSuccess вызывается после уничтожения изBaseActivity называется
Код, на который я подписываюсь, выглядит следующим образом:
service.requestItems("ISSUED")
.zipWith(service.requestItems("NEW"), (r1, r2) ->
Stream.concat(Stream.of(r1.body.items), Stream.of(r2.body.items))
.map(Item::new)
.toList()
)
.onTerminateDetach()
.subscribe(new ItemsCallback());
Почему это происходит и как я могу предотвратить это?Я напечатал логи и увидел, что вызывается команда destroy в классе Diposer, и я вижу, что после этого все еще происходит onsuccess ...