Как управлять DialogFragment с помощью RxJava?
Я пытался определить, возможно ли создать наблюдаемый DialogFragment
. По сути, я хочу иметь возможность:
- Создайте и покажите
DialogFragment
- Получить обратно rx
Observable
, на который можно подписаться на результат (ОК/отменить нажатие, ввод строки, успех/неудача фоновой задачи и т.д.).
- Правильно обрабатывать изменение конфигурации
До сих пор ближайшая вещь, которую я нашел, ReactiveDialog
, которая раньше была частью RxAndroid, но была удален из RxAndroid в версии 1.0.0 как часть упрощения RxAndroid.
В то время как ReactiveDialog
действительно соответствует моим первым двум критериям, он, похоже, не обрабатывает изменение конфигурации. Существует два вопроса:
-
DialogFragment
должен поддерживать Observable
при изменении конфигурации, чтобы он мог уведомлять подписчиков о своем состоянии.
- Абонент должен иметь возможность либо удерживать подписку, либо повторно подписываться после изменения конфигурации (очевидно, без возникновения утечки памяти).
Я все еще довольно новичок в RxJava, поэтому я все еще пытаюсь обвести голову тем, как вы справитесь с чем-то подобным. Похоже, это должно быть возможно, но я чувствую, что для этого потребуется статический или singleton Observable
менеджер и, возможно, retainedInstance
DialogFragments
.
У кого-нибудь есть предложения или рекомендации для этого?
Ответы
Ответ 1
Здесь есть два вопроса; один из них заключается в том, что вы не хотите потерять объекты Java во время ретрансляции - просмотрите изменения времени выполнения.
Другая проблема заключается в том, что вы хотите создать Observable, у которого есть действие диалога, когда это действие запускается. Для этого взгляните на документы RxJava, Пример асинхронного наблюдателя. Вам нужно будет создать Observable.OnSubscribe
и передать этот Subscriber
в ваш код, который вызовет необходимые вызовы onNext
/onError
/onCompleted
.