JavaRx: SingleObserver onSuccess вызывается после удаления подписки - PullRequest
0 голосов
/ 25 октября 2018

Это мой обратный вызов:

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 ...

...