Подтвердить что ты не робот

Как управлять DialogFragment с помощью RxJava?

Я пытался определить, возможно ли создать наблюдаемый DialogFragment. По сути, я хочу иметь возможность:

  • Создайте и покажите DialogFragment
  • Получить обратно rx Observable, на который можно подписаться на результат (ОК/отменить нажатие, ввод строки, успех/неудача фоновой задачи и т.д.).
  • Правильно обрабатывать изменение конфигурации

До сих пор ближайшая вещь, которую я нашел, ReactiveDialog, которая раньше была частью RxAndroid, но была удален из RxAndroid в версии 1.0.0 как часть упрощения RxAndroid.

В то время как ReactiveDialog действительно соответствует моим первым двум критериям, он, похоже, не обрабатывает изменение конфигурации. Существует два вопроса:

  • DialogFragment должен поддерживать Observable при изменении конфигурации, чтобы он мог уведомлять подписчиков о своем состоянии.
  • Абонент должен иметь возможность либо удерживать подписку, либо повторно подписываться после изменения конфигурации (очевидно, без возникновения утечки памяти).

Я все еще довольно новичок в RxJava, поэтому я все еще пытаюсь обвести голову тем, как вы справитесь с чем-то подобным. Похоже, это должно быть возможно, но я чувствую, что для этого потребуется статический или singleton Observable менеджер и, возможно, retainedInstance DialogFragments.

У кого-нибудь есть предложения или рекомендации для этого?

4b9b3361

Ответ 1

Здесь есть два вопроса; один из них заключается в том, что вы не хотите потерять объекты Java во время ретрансляции - просмотрите изменения времени выполнения.

Другая проблема заключается в том, что вы хотите создать Observable, у которого есть действие диалога, когда это действие запускается. Для этого взгляните на документы RxJava, Пример асинхронного наблюдателя. Вам нужно будет создать Observable.OnSubscribe и передать этот Subscriber в ваш код, который вызовет необходимые вызовы onNext/onError/onCompleted.