2015-11-20 12 views
11

Mam usługę Bound, która odpowiada za pobieranie plików, a tym samym zna stan pobierania/postępu. Interfejs użytkownika (fragment lub działanie) musi pokazywać/aktualizować postęp pobierania z usługi.Jak zaktualizować UI z usługi Android za pomocą RxJava/RxAndroid

Właściwie uważam, że powszechnym sposobem jest użycie BroadcastReciever lub CallBack z Activity. Ale słyszałem gdzieś o korzystaniu z klasy RxJava (ReactiveX Programming) i klasy mediator (i Dagger do wstrzykiwania jej zarówno do usługi, jak i aktywności), o której wspomniano poniżej.

Moje pytanie brzmi: jak radzić sobie z RxJavą z tymi garstkami? Jakieś próbki kodu? Czy istnieje inny skuteczny sposób niż użycie intencji?

zasobów: More efficient way of updating UI from Service than intents? [zobacz pierwszą aktualizację Odpowiedź]

+1

Osobiście wolę korzystać z usługi Posłańca: http://developer.android.com/reference/android/os/Messenger.html – mjp66

+1

Pomyślałem, że mam przykład korzystania z Komunikatora gdzieś tutaj, nie sądzę, ale tutaj jest dobry po wyszczególnieniu jego użycia: http://stackoverflow.com/questions/4300291/przykład- komunikacja-między -aktywnością- i -użytkownikiem-uzyskiwanie wiadomości – mjp66

+0

po prostu użyj wzorca "local bound service", nie potrzebujesz żadnych zewnętrznych bibliotek i to jest najszybszym rozwiązaniem – pskink

Odpowiedz

1

Binder podklasa użyć, gdy coś wiąże swoje Service może narazić metodę, która zwraca Observable który emituje dane postępu.

Ograniczeniem tego podejścia jest to, że masz dwa zasoby, które musisz zwolnić, gdy instancja Activity nie jest już ważna: połączenie usługi i obserwowalna subskrypcja.

+0

czy możesz wyjaśnić swój komentarz lub podać przykład? –

+2

Zła odpowiedź. Obserwowalny nie jest obiektem serializowanym, więc nie jest pewien, czy zadziała, zwłaszcza jeśli usługa jest przeznaczona do interakcji między procesami. Nie działa. – msangel

+1

Interakcja między procesami nie wchodzi w zakres tego pytania. W przeciwnym razie jest to zasadniczo to samo, co wystawienie instancji usługi za pomocą modułu wiążącego, a usługa nie jest również możliwa do serializacji. – npace

Powiązane problemy