RxJava2 - Walidacja hasła

Kliknij i wspomóż mnie :)

Android

Wstęp

Ostatnio posty na bloga nie pojawiały się zbyt często, ale to z ważnej przyczyny. Pracuję intensywnie nad kursem na platformę Udemy, który będzie zawierać obecnie najbardziej wykorzystywane technologie w programowaniu na platformę Android.

Pierwszym must have jest RxJava2. Jest to oficjalne API do programowania reaktywnego. Z moich analiz wynika, że około 3 na 4 firmy wymagają tej biblioteki w ofertach o pracę.

Mój kurs "RxJava2 w Android" można znaleźć tutaj:

Kurs RxJava2

Programowanie reaktywne

Programowanie reaktywne to paradygmat programowania oparty na wzorcu projektowym Obserwator.

Jego zastosowanie wynikuje odwróceniem przepływu i zamiast wywoływać, obserwujemy emisję.

Emisja może zwracać jeden, wiele lub żaden element. Za pomocą RxJava2 można także zaadaptować już napisane funkcje.

Link do oficjalnej strony projektu:

ReactiveX

Link do oficjalnej dokumentacji:

RxJava - Github

Przykład

W tym artykule zamierzam pokazać Ci jedno fajne zastosowanie, które od razu przyszło mi do głowy podczas tworzenia kursu.

Będzie to aplikacja do sprawdzania siły hasła.

Może dość oklepany przykład ale po ilości kodu zobaczysz jak bardzo jest to przyjemne w RxJava2.

Dodatkowo wykorzystam bibliotekę RxBinding stworzoną przez Jake'a Wharton'a do obserwowania widoków.

Konfiguracja

Żeby zacząć używać RxJava2 trzeba zaimportować poniższą bibliotekę:

Żeby używać RxBinding trzeba zaimportować tą bibliotekę:

Dodatkowo warto dodać opcje z Java 8 jak na przykład wyrażenia lambda. W pliku build.gradle naszej apki:

Widok

W tym widoku będą 2 elementy: AppCompatEditText do wprowadzania hasła oraz AppCompatTextView do wyświetlania wiadomości zwrotnej.

Plik xml z kodem wygląda tak:

Na potrzeby poradnika specjalnie nie ukrywam wpisywanego tekstu. Oczywiście w aplikacji pole do edycji tekstu powinno zostać oznaczone taką wartością:

Śledzenie tekstu

Teraz w końcu można napisać kod odpowiedzialny za reagowanie na zmiany.

Jako, że od razu dokonujemy subskrypcji to RxJava2 zwraca interfejs Disposable, który pozwoli później na zakończenie emisji.

Za pomocą biblioteki RxBinding i funkcji textChanges kod zaczyna reagować na każdą zmianę w polu edycyjnym.

Operator map jest tutaj najważniejszy. Deleguje on sprawdzenie hasła do innej funkcji.

Operatory subscribeOn i observeOn określają wątki wykonywania i emisji.

Najmniej ważny jest operator debounce. Ogranicza on emisję co 300 milisekund.

Póżniej jest już fragment subskrybcji, gdzie na podstawie wartości valid wyświetlany jest komunikat.

Sprawdzanie hasła

W kursie nie chciałem odciągać osoby od głównego tematu, toteż skorzystałem z gotowego wyrażenia regularnego (regex) zaproponowanego przez użytkownika Tomalak

StackOverflow

Kod mówi wszystko :)

Zamknięcie emisji

Używając biblioteki RxJava2 musimy pamiętać, by odsubskrybować się od otwartej emisji.

Jest to dobry sposób by nie powodować wycieków pamięci w momencie np. zamknięcia aktywności.

Ja wywołuję zamknięcie już w onPause

Tutaj możesz poczytać o tym więcej:

Disposing on Android. The right way

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 😊

O mnie

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ć.

Zobacz więcej

Najnowsze posty

Kliknij i wspomóż mnie :)

Zostańmy w kontakcie

* Wymagane
Kliknij i wspomóż mnie :)
shop
Otwórz Sklep Play

Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.