Почему я получаю ложь в onSubscribe () SingleObserver getSingleObserver ().
В настоящее время вы регистрируете, утилизируется ли одноразовый метод в методе onSubscribe. На данный момент одноразовые еще не были утилизированы.
Как отписаться или отменить наблюдение / наблюдателя при вызове операций onStop ().
Вместо использования SingleObserver вы можете использовать метод подписки, который возвращает одноразовое значение. При этом вы можете либо управлять одноразовым расходом напрямую, либо использовать CompositeDisposable. Затем вы должны вызвать метод dispose для этого одноразового использования, с CompositeDisposable это достигается путем вызова clear ()
private final CompositeDisposable disposables = new CompositeDisposable();
@Override
protected void onStart() {
super.onStart();
disposables.add(getSingleObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(value -> {
Log.d(TAG, " onSuccess: " + value);
}, error -> {
Log.e(TAG, " onError", error);
}
)
);
}
@Override
protected void onStop() {
disposables.clear();
super.onStop();
}
Кроме того, что на самом деле происходит при ориентации экрана. Наблюдаемое автоматически отписывается или продолжает свою работу? что делать для ротации устройства?
По умолчанию автоматическое управление наблюдаемым не происходит, вы сами управляете им. В вашем примере кода, когда устройство вращается, вы получите еще один вызов onCreate, здесь вы запланируете работу, которая будет выполнена снова, работа, которая была запланирована до ротации, все еще могла быть запущена, так что вы могли в итоге утечь старую активность и получить обратный вызов, когда работа завершается успешно или не удается - в этом случае вы увидите оператор журнала.
Существуют некоторые инструменты, которые обеспечивают автоматическое наблюдаемое управление, хотя вам следует прочитать статью авторов о некоторых проблемах, которые существуют при таком подходе.
Другим вариантом для вас может быть просмотр новой библиотеки компонентов архитектуры, в частности ViewModel и LiveData. Это упростит то, что вам нужно сделать в отношении управления подписками и изменениями конфигурации.