Google robi porządek. Zobacz, do czego wykorzystasz Android Jetpack
Konferencja Google I/O 2018, podobnie jak poprzednie edycje, tak i tym razem przyniosła wiele nowości dla Android developerów. Jedną z najczęściej słyszanych fraz był Android Jetpack. Czym jest? Poniżej znajdziecie opis pięciu nowych rzeczy, które są dostępne w ramach Android Jetpack, czyli: Paging, Slices, Android KTX, WorkManager oraz Navigation.
Mateusz Michalski. Mobile Developer w Gorrion Software House. Od lat pasjonuje się rozwojem technologii mobilnych. Jak sam wspomina, jego rozwiązania znajdują się w Waszych kieszeniach. Niedościgniony znawca memów i cytatów z polskich komedii.
Google, wraz z rosnącą liczbą wydawanych przez nich bibliotek oraz narzędzi, postanowiło zrobić mały porządek i stworzyło Android Jetpack. Z pozoru groźnie brzmiąca nazwa w rzeczywistości jest tylko usystematyzowanym zbiorem nowych oraz już istniejących bibliotek i narzędzi. Android Jetpack składa się z czterech części:
Poszczególne komponenty nie są składowymi samej platformy a jedynie narzędziami mającymi ułatwić tworzenie aplikacji developerom. Dzięki temu można je dodać do projektu w dowolnym momencie.
Spis treści
Paging
Niejednokrotnie pobieranie wszystkich rekordów z bazy danych mija się z celem. Jeżeli na liście widocznych jest tylko parę elementów, możemy regularnie wczytywać kolejne rekordy w miarę jak użytkownik ją przewija. Do tej pory, jeżeli używaliśmy biblioteki Room, czyli nakładki na bazę danych, która ułatwia jej zarządzaniem, byliśmy zmuszeni do własnej implementacji systemu paginacji lub pobierania wszystkich wyświetlanych elementów. Dzięki bibliotece Paging nie musimy już dłużej się tym przejmować — Google dostarcza nam kompletny mechanizm pozwalający na wyciąganie tylko części elementów z bazy. Żeby jeszcze bardziej zachęcić developerów do używania Rooma, Paging świetnie współpracuje z dwoma popularnymi bibliotekami: LiveData oraz RxJava.
Slices
Slices jest biblioteką pozwalającą na integrację naszej aplikacji z systemową wyszukiwarką oraz kolejną nowością — Google Assistant. Slices umożliwia aplikacji (która nie musi być nawet uruchomiona) na wyświetlanie graficznych elementów wewnątrz wyników wyszukiwań Google. Biblioteka jest wspierana od Androida 4.4, dzięki czemu obsługuje około 95% urządzeń z zainstalowanym systemem Android.
Android KTX
Android KTX to zestaw rozszerzeń do języka Kotlin, które w znaczny sposób ułatwiają życie Android developerom. Android KTX korzysta z zalet języka Kotlin pozwalając na jeszcze szybsze tworzenie aplikacji. Przykładowo, dodanie dla widoku OnPreDrawListener w następujący sposób:
view.viewTreeObserver.addOnPreDrawListener( object : ViewTreeObserver.OnPreDrawListener { override fun onPreDraw(): Boolean { viewTreeObserver.removeOnPreDrawListener(this) actionToBeTriggered() return true } } )
może zostać zamienione na poniższy kod:
view.doOnPreDraw { actionToBeTriggered() }
Pełną listę rozszerzeń Android KTX możecie znaleźć tutaj.
WorkManager
WorkManager to biblioteka upraszczająca wykonywanie kodu, który ma działać w tle. WorkManager zawiera łatwe API, dzięki któremu możemy kolejkować zadania wykonywane przez aplikację w tle. WorkManager składa się z czterech klas pozwalających na zarządzanie tworzonymi zadaniami:
- Worker — określa zadanie, które ma zostać wykonane,
- WorkRequest — reprezentuje pojedyncze zadanie, które będzie wykonywane,
- WorkManager — kolejkuje oraz zarządza WorkRequestami,
- WorkStatus — pozwala na dostęp do informacji na temat poszczególnych zadań.
Jedną z zalet WorkManagera jest to, że może on działać na urządzeniach bez zainstalowanych Google Play Services. Więcej na temat tworzenia, kolejkowania oraz wykonywania zadań z użyciem WorkManagera można znaleźć na tej stronie.
Navigation
Na koniec zostawiłem najciekawszą nowość znajdującą się w Android Jetpack. Jedną z trudniejszych rzeczy podczas tworzenia aplikacji na platformę Android jest zaznajomienie się oraz zarządzanie cyklem życia Fragmentów oraz (w mniejszym stopniu) aktywności. Podczas konferencji Google oficjalnie oświadczyło, że zaleca tworzenie aplikacji zawierających tylko jedną aktywność. Żeby to ułatwić, do już istniejących Android Architecture Components została dodana biblioteka Navigation. Pozwala ona na tworzenie grafów definiujących nawigację w naszej aplikacji. Grafy nawigacji tworzy się w graficznym edytorze do złudzenia przypominającym Interface Buildera dobrze znanego programistom korzystającym z Xcode.
By jeszcze bardziej uprościć pracę developerom, Google stworzyło dodatek do gradle o nazwie SafeArgs. Dodatek ten, w połączeniu z Navigation, umożliwia na przekazywanie argumentów między fragmentami zawartymi w grafie nawigacji w bezpieczny dla programisty sposób (nie musi się on martwić o zgodność typów podczas przekazywania argumentów).
Dodatkową zaletą Navigation jest automatyczna obsługa deep linków. W momencie kliknięcia na deep link Navigation automatycznie utworzy wszystkie fragmenty potrzebne do wyświetlenia zawartości wewnątrz naszej aplikacji, zadba o konfigurację przejść pomiędzy fragmentami oraz zapewni poprawną obsługę przycisku wstecz. A to wszystko dzięki paru kliknięciom w graficznym edytorze.
Podsumowanie
Android Jetpack, mimo że sam w sobie nie jest żadną biblioteką ani narzędziem, pozwala w pewnym stopniu uporządkować część rzeczy dostępnych dla Android developerów wydanych przez Google. Spoglądając na nowe komponenty zawarte w Android Jetpack można zauważyć w jaki sposób Google chce, by programiści tworzyli aplikacje na ich mobilny system operacyjny. Mamy dostęp do biblioteki Slices pozwalającej nam na współpracę naszej aplikacji z Google Assistant. Android KTX z kolei ma na celu zwiększyć popularność języka Kotlin wśród programistów. Pozostałe trzy komponenty, czyli Paging, WorkManager oraz Navigation umożliwiają jeszcze szybsze oraz łatwiejsze tworzenie aplikacji oferując graficzne edytory oraz współpracę z innymi równie popularnymi bibliotekami (jak np. Room).