Противоречивые ответы за результат .isDisposed () - PullRequest
0 голосов
/ 02 октября 2018

Я уверен, что где-то читал, что .isDisposed() не гарантирует возврата true, если .dispose() не было вызвано явно.Но этот ответ говорит, что он всегда возвращает true после вызова .onComplete(), тогда как этот говорит, что .doOnDispose() означает никогда вызывается после события завершения.

Я хотел бы создать Action, который запускается, если Observable расположен, но не, если он завершается нормально.Есть ли способ гарантировать это?Каков официальный ответ по семантике .isDisposed()?Возможность того, что он может или не может вернуться true после завершения, не очень удовлетворительна.

Обновление: я пытаюсь преобразовать Single в 1-элемент Observable.Как только он испускает свой предмет, он, конечно, станет завершенным.Но я все же хотел бы, чтобы его .dispose() метод вызывал отдельное действие:

        mObservable = mSingle
                .toObservable()
                .doOnDispose( () -> {
                    do stuff} );

Вся причина, по которой я преобразовываю Single в Observable, заключается в способности обрабатывать doOnDispose() действие.Правильно ли я понимаю, что Single разрушается после испускания его предмета, поэтому его метод doOnDispose больше не доступен?(Если я ошибаюсь по этому поводу, я могу пропустить преобразование в Observable)

1 Ответ

0 голосов
/ 08 октября 2018

@ akarnokd указал на то, что я никогда полностью не понимал: когда вы используете лямбды в вызове subscribe(), под капотом создается LambdaSubscriber, и он сообщает isDisposed() true о завершении.

Если вы не хотите этого, вы, очевидно, должны написать свой собственный Observer с желаемым поведением.AFAIK нет способа поменять по умолчанию LambdaSubscriber.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...