Android
2019-08-31
W tym artykule skupię się na przedstawieniu tego, jak łatwo i szybko można zarządzać wątkami w Androidzie z pomocą biblioteki RxJava2.
Cały kod można sprawdzić pod tym linkiem:
Github
Kod ten jest częścią kursu na Udemy pod nazwą RxJava2 w Android
. Zachęcam do sprawdzenia kilku darmowych odcinków😉
Kurs RxJava2
RxJava2 pozwala nam określić w jaki sposób chcemy przetwarzać dane w tle. Do tego służy klasa Schedulers oraz operator subscribeOn
Klasa Schedulers posiada takie warianty obsługiwania wątków:
Wymyśliłem, że dobrym przykładem będzie ładowanie zdjęcia z wcześniej zdefiniowaną miniaturką.
Widok naszej aplikacji jest napisany tak:
Jak widać znajduje się tylko jeden ImageView, który ma rozmiar 1/3 ekranu i będzie przyjmował grafikę z kodu.
W klasie deklarujemy nasz ImageView oraz interfejs Disposable w celu późniejszego pozbycia się wątku.
Po załadowaniu naszego widoku tworzymy za pomocą operatora create strumień, który pozwala określić ilość kroków (onNext).
Na początek od razu ładujemy miniaturkę i symulujemy pobieranie danych z sieci usypiając wątek na 2 sekundy.
Po tym czasie ładujemy właściwą grafikę i powiadamiamy o zakończeniu wszystkich subskrybentów (onComplete).
Aby ładowanie w ogóle wystąpiło musimy się zasubskrybować.
W pierwszej linijce określamy, że będziemy ładować dane czyli wybieramy Schedulers.io()
Następnie jako, że wyświetlamy dane w widoku to wynik będzie zwrócony do wątku głównego.
Na sam koniec subskrybujemy i ładujemy zdjęcie do ImageView
Jeszcze raz zachęcam do sprawdzenia mojego kursu i poniżej wstawiam linki do dokumentacji:
Github/RxJava2
ReactiveX
Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊
Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.
Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.