Cykl życia aplikacji na Androida – co to takiego?

Paweł Dedio Programowanie 2018-10-20

We wcześniejszych artykułach pisałem ogólnie o pracy programisty i różnych aspektach związanych z tym zawodem. Teraz czas przejść do konkretniejszych tematów. Chciałbym Wam przybliżyć, jak system Android działa z perspektywy programisty. Zaczniemy od czegoś, co jest absolutną podstawą tego systemu, czyli cyklu życia aplikacji. Czasami jest on dobrym przyjacielem, a często jest naszym utrapieniem i zapewne każdy programista przeklinał kiedyś Google za wprowadzenie takiego mechanizmu.

Zanim przejdziemy do konkretów, chciałbym zaznaczyć, że czasami będę musiał wprowadzić pewne uproszczenia tak, aby ułatwić odbiór tego tekstu przez osoby niezwiązane z programowaniem. W razie jakichkolwiek wątpliwości zachęcam do zostawienia komentarza.

Co to jest aktywność?

W tytule użyłem pewnego uproszczenia – tak naprawdę będziemy omawiać cykl życia Aktywności (eng. Activity). Oczywiście najpierw musimy się dowiedzieć, co to właściwie jest. Aktywność to najważniejsza rzecz każdej aplikacji. W uproszczeniu możemy przyjąć, że jest to każdy ekran, który zajmuje powierzchnię całego wyświetlacza telefonu. Za każdym razem, gdy otwieramy jakąś aplikację, to system uruchamia jej domyślną aktywność. Tak samo, gdy w niej klikniemy na jakiś przycisk, który przenosi nas na inny ekran, to pod spodem uruchamiana jest inna aktywność, która “przykrywa” tą obecnie prezentowaną. Aktywność można porównać do podstron serwisu internetowego. Przy starcie strony otwieramy podstronę o nazwie „index”, następnie otwieramy podstronę o nazwie „produkty” i tak dalej.

programowanie

Łatwo możemy wywnioskować że Aktywność jest ściśle związana z interfejsem użytkownika. Jest to praktycznie jedyna rzecz, którą użytkownik widzi po włączeniu aplikacji. W aktywności możemy umieszczać mnóstwo innych elementów takich, jak przyciski, obrazki, napisy i tak dalej. Za ich pomocą programista zapewnia dwustronną komunikację z użytkownikiem.

 

Czy system widzi naszą aktywność?

System oczywiście posiada informację o naszych aktywnościach. Android ciągle przekazuje do naszej aktywności informacje o aktualnym „stanie” aplikacji. Możemy przyjąć, że stan jest informacją o tym na jakim poziomie znajduje się obecnie aplikacja. Przykładowo, gdy użytkownik podczas korzystania z naszej aktywności zdecyduje się na jej zminimalizowanie, to system wyśle do nas informację, że nasza aplikacja przejdzie teraz do działania w tle. Taką samą informację dostaniemy również, gdy użytkownik powróci do naszej aplikacji.

 

Jakie wyróżniamy stany aplikacji?

cykl zycia aplikacji android

Słowo stan jest bardzo intuicyjne i można odebrać na wyczucie, o co tak właściwie chodzi. W ten sposób płynnie przechodzimy do głównego tematu tego artykułu – cyklu życia aktywności. Cykl ten to nic innego jak zebranie do kupy wszystkich możliwych stanów aplikacji, wraz z informacją jak i kiedy następuje zmiana poszczególnych stanów.

Wyróżniamy 4 najważniejsze stany:

  • Aktywny (eng. active) – występuje wtedy, gdy nasza aktywność jest widoczna na pełnym ekranie i jest to jedyna aplikacja jaką użytkownik ma obecnie otwartą
  • Zapauzowany (eng. paused) – występuje wtedy, gdy użytkownik uruchomi jakąś inną aplikację, jednak ta nie zasłania całego ekranu (nasza aplikacja jest nadal częściowo widoczna).
  • Zatrzymany (eng. stopped) – występuje, gdy użytkownik otworzy jakąś inną aplikację, która całkowicie przykryje naszą. Stan ten wystąpi również wtedy, gdy użytkownik zminimalizuje naszą aplikację.
  • Zniszczony (eng. destroyed) – Android dynamicznie zarządza pamięcią. W sytuacji, gdy mamy uruchomionych dużo aplikacji, to system może zniszczyć naszą aktywność, która jest w stanie zatrzymanym lub zapauzowanym (bardzo rzadko) w celu uzyskania dodatkowej pamięci. Przed całkowitym zniszczeniem naszej aplikacji system nas o tym powiadomi – jest to ostatni moment, kiedy możemy zapisać ważne dla użytkownika dane.

 

Jakie są zalety?

programowanie nauka komputer

To właśnie między innymi dzięki takiemu cyklowi życia Android zapewniał multitasking (uruchamianie wielu aplikacji jednocześnie) praktycznie od samego początku swojego istnienia. Każda uruchomiona aplikacja ładuje swoje dane do pamięci operacyjnej, której jak pamiętamy pierwsze telefony nie miały zbyt wiele. System pozwala na uruchomienie kilku programów jednocześnie, ale do momentu, kiedy jest wystarczająco dużo dostępnych zasobów. Jeśli zaczyna jej brakować, algorytmy decydują o zakończeniu konkretnego procesu.

Android tworzenie aplikacji problem

Tak jak wspominałem wcześniej, system informuje nas o tym, że zamierza zakończyć proces naszej aplikacji. W tym momencie możemy zapisać do specjalnego pakietu pamięci wszelkie informacje o stanie aktualnej aplikacji. Przykład? Jaki ekran przegląda użytkownik, co aktualnie widzi. W momencie, gdy użytkownik powróci do naszej aplikacji, system da znać, że teraz jest odpowiedni moment na przywrócenie poprzedniego stanu aplikacji. Uzyskamy również te dane, które zapisaliśmy przed zakończeniem procesu).

typ programowania programisty

Dzięki tak prostej sztuczce Android umożliwiał działanie kilku aplikacji jednocześnie nawet na urządzeniach z bardzo małą pamięcią operacyjną. Użytkownik powracając do jakiejś aplikacji nie wiedział, czy system cały czas utrzymywał jej działanie, czy może została ona uruchomiona ponownie. Ogólnie możemy napisać, że główną zaletą cyklu życia w takiej postaci jest umożliwienie systemowi na efektywne zarządzanie RAM, dzięki czemu nasz telefon działa szybciej.

 

Jakie są wady?

Jak wiadomo nie ma rozwiązań idealnych i wszystko ma swoje wady. W tym wypadku największym minusem jest poziom skomplikowania całego rozwiązania. O ile na początku, przy słabych urządzeniach, takie ścisłe zarządzanie zasobami miało sens, tak obecnie nie daje to aż tak dużej przewagi nad konkurencją. Nawet przy pisaniu prostych aplikacji musisz pamiętać o tych wszystkich przypadkach i metodach związanych z cyklem życia. Zobacz na diagram znajdujący się w oficjalnej dokumentacji Androida:

Możesz również przewinąć tamten artykuł i sam zobaczysz jaki jest długi. Jeśli wyjaśnienie jakiegoś zagadnienia wymaga tyle tekstu, to znaczy, że nie jest ono proste. Rozumiem dlaczego system wymaga od nas obsługi tych wszystkich przypadków, ale większość osób nie chce tego robić. Chcą po prostu napisać aplikację, która działa i nie interesuje ich, czy użytkownik ją zamknie, zminimalizuje lub wróci do niej po długiej nieobecności. Na szczęście Google zauważył niezadowolenie programistów i stopniowo wprowadza pewne biblioteki, które ukrywają przed programistą przebieg cyklu życia i biorą całą jego obsługę na siebie. Myślę, że za kilka lat cykl życia będzie niezauważalny z perspektywy przeciętnego programisty.

Uff, dotarliśmy do końca :). Mam nadzieję, że udało mi się ubrać całość w łatwe do przyjęcia słowa i zrozumieliście na czym to wszystko polega. Zachęcam do zadawania pytań w komentarzach. Zdaję sobie sprawę, że temat dla kogoś zielonego może być dość trudny, ale jestem tu po to, żeby ułatwić wam jego zrozumienie. Możecie również pisać, o czym chcielibyście przeczytać w przyszłych odcinkach. Za tydzień omówimy w jaki sposób definiujemy interfejs użytkownika. Zdradzę wam również tajemnicę dlaczego tak wiele aplikacji nie wspiera rotacji ekranu. Do zobaczenia tradycyjnie za tydzień!

motywacja praca programowanie

Zapraszam również na największe w Polsce forum dla programistów Android. Jeśli macie pytania odnośnie kariery jako programista – zapraszam do działu Kariera programowanie. Zachęcam również do przejrzenia działu Praca oraz zlecenia dla programistów – być może to właśnie tam znajdziesz swoją pierwszą pracę 😉

 

Czy myślałeś już o dzieleniu się swoją wiedzą z innymi?

Możesz zostać wykładowcą w Coders Lab! Dostaniesz gotowe materiały edukacyjne, ale jednocześnie będziesz miał wpływ na merytorykę wykładów. Czekają Cię także interesujące szkolenia, które rozwiną Twoje umiejętności miękkie. A praca wykładowcy w szkole IT to po prostu dobra zabawa! Dowiedz się więcej o swoich możliwościach i technologiach, w których możesz nauczać tutaj.

 

Poprzednie odcinki:

  1. Typowy dzień pracy programisty
  2. Wady pracy programisty
  3. Zalety pracy programisty
  4. [FAQ] Wszystko, co powinieneś wiedzieć jeśli interesuje Cię praca programisty
  5. Co mnie zdziwiło w programowaniu?
  6. Motywacje – w jaki sposób nie stracić zapału do programowania?
  7. Jaką firmę wybrać na początku kariery programisty?
  8. Jak wygląda rozmowa o pracę na stanowisko programisty?
  9. Jak zacząć programować?
  10. Skąd czerpać wiedzę o programowaniu?
  11. Początki programowania – jaką technologię wybrać?





Przewiń stronę, by przeczytać kolejny wpis
Przewiń stronę, by przeczytać kolejny wpis
x