2015-09-05 24 views
13

Próbuję ustalić, czy możliwe jest utworzenie możliwego do zaobserwowania DialogFragment. Zasadniczo chcę, aby być w stanie:Jak zarządzać DialogFragment z RxJava?

  • Tworzenie i pokazać DialogFragment
  • Wracaj RX Observable które mogą być subskrybowane do wyniku (OK/Cancel naciśnięty, wejście String, sukces zadanie tła/awarii, itd.)
  • prawidłowo obsługiwać zmiana konfiguracji

dotychczas najbliższa rzecz Znalazłem to ReactiveDialog, który kiedyś częścią RxAndroid, ale został removed from RxAndroid in v1.0.0 w ramach uproszczenia RxAndroid.

Podczas gdy ReactiveDialog wydaje się spełniać moje pierwsze dwa kryteria, nie wydaje się obsługiwać zmiany konfiguracji. Istnieją dwie kwestie do rozważenia:

  1. DialogFragment zwiazany Observable całej konfiguracji zmian więc może powiadomić abonentów o swoim stanie.
  2. Subskrybenci muszą mieć możliwość wstrzymania subskrypcji lub ponownej subskrypcji po zmianie konfiguracji (oczywiście bez powodowania wycieku pamięci).

Wciąż jestem dość nowy w RxJavie, więc wciąż próbuję zawołać głowę, jak poradzisz sobie z czymś takim. Wygląda na to, że powinno być możliwe, ale wydaje mi się, że wymagałoby to statycznego lub pojedynczego menedżera Observable i prawdopodobnie retainedInstanceDialogFragments.

Ktoś ma jakieś sugestie lub najlepsze praktyki w tym zakresie?

+0

Witam! Znalazłeś jakieś rozwiązanie? – Tiberal

Odpowiedz

1

Istnieją dwie kwestie tutaj; jednym z nich jest to, że nie chcesz tracić obiektów Java podczas przekazywania - spójrz na to o runtime changes docs.

Inną kwestią jest to, że chcesz utworzyć obserwowalne, które ma działanie w oknie dialogowym, kiedy to działanie zostanie uruchomione. W tym celu zajrzyj do dokumentacji RxJava, Asynchronous Observer example. Będziesz musiał utworzyć Observable.OnSubscribe i przekazać ten kod Subscriber do swojego kodu, który będzie wywoływał niezbędne wywołania onNext//onCompleted.