740
Rozdział 18.
Usługi
Usługi działają w tle
Aplikacje na Androida są kolekcjami aktywności i innych zasobów. Znaczna
większość ich kodu jest związana z wchodzeniem w interakcje z użytkownikiem,
czasami jednak może się pojawić konieczność wykonywania jakichś operacji w tle,
na przykład możemy chcieć pobrać duży plik, strumieniować utwór muzyczny lub
nasłuchiwać wiadomości przesyłanych z serwera.
Aktywności raczej nie nadają się do wykonywania takich operacji. W prostych
przypadkach możemy utworzyć wątek i wykonywać w nim takie czynności, ale jeśli nie
zachowamy ostrożności, to kod aplikacji szybko może się stać złożony i nieczytelny.
I właśnie dlatego opracowano
usługi
(ang. services). Usługa jest komponentem
aplikacji przypominającym nieco aktywność, lecz pozbawionym interfejsu
użytkownika. Cykl życia usług jest prostszy od cyklu życia aktywności, a oprócz tego
usługi są wyposażone w zestaw możliwości ułatwiających pisanie kodu, który będzie
działał w tle, podczas gdy użytkownik będzie mógł zajmować się czymś innym.
Istnieją trzy typy usług
Dostępne są trzy różne rodzaje usług:
Usługi uruchomione.
Usługi uruchomione (ang. started services) mogą działać w tle przez dowolnie
długi czas, i to nawet po tym, jak aktywność, która je uruchomiła, zostanie
usunięta. Na przykład gdybyśmy chcieli pobrać z internetu duży plik,
to moglibyśmy do tego użyć właśnie usługi uruchomionej. Po zakończeniu
operacji taka usługa jest zatrzymywana.
Usługi powiązane.
Usługi powiązane (ang. bound services) są skojarzone z jakimś innym
komponentem, takim jak aktywność. Aktywność może prowadzić interakcję
z taką usługą — przesyłać do niej żądania i pobierać wyniki. Usługi tego
typu działają tak długo, jak długo działa komponent, z którym są powiązane.
Kiedy komponenty nie będą już powiązane, usługa jest niszczona. Gdybyśmy
chcieli napisać drogomierz zliczający przejechany dystans, to prawdopodobnie
użylibyśmy do tego właśnie usługi powiązanej. Dzięki temu wszystkie
aktywności powiązane z usługą mogłyby cyklicznie prosić usługę o przekazanie
informacji o pokonanym dystansie.
Usługi zaplanowane.
Usługa zaplanowana (ang. scheduled service) to usługa, której wykonanie
zostało ustalone na określoną godzinę. Na przykład w API 21 i nowszych
można zaplanować wykonanie zadania na określoną godzinę.
W tym rozdziale przyjrzymy się tworzeniu usług uruchomionych.
Oprócz pisania własnych
usług, można także
korzystać
z wbudowanych
usług Androida.
Do usług wbudowanych
należą: usługa
powiadomień, usługa
lokalizacji, usługa alarmu
oraz usługa pobierania.
Get Android Programowanie aplikacji. Rusz głową! Wydanie II now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.