Akademia Lekcje
- Lekcja 1 – Activity (jesteś tutaj)
- Lekcja 2 – MVVM (link)
- Lekcja 3 – Obsługa Bazy Danych – Room (link)
- Lekcja 4 – Wdrożenie DI (link)
Kiedy kilka lat temu zaczynałem swoją przygodę z Androidem wiele rzeczy sprawiało mi trudność. Między innymi z powodu braku materiałów polskojęzycznych. Jednym z takich tematów był oczywiście cykl życia Activity 🙂
Jeśli też masz podobny problem jak ja kiedyś, serdecznie zapraszam do przeczytania tego artykułu. Zaparz sobie kawkę i zaczynamy!
Na początek, czym jest Activity?
Na tą chwilę przyjmijmy, że Activity przedstawia pojedynczy ekran aplikacji, z którym użytkownik może w danym momencie przeprowadzać interakcje. Aktywność to najważniejsza rzecz każdej aplikacji. Możemy przyjąć, że jest to ekran, który zajmuje powierzchnię całego wyświetlacza smartfonu. W aktywności możemy umieszczać mnóstwo innych elementów takich, jak przyciski, obrazki i tym podobne.
Aplikacja, może mieć kilka Aktywności (każda z własnym cyklem życia). W tym artykule skupimy się właśnie na tym temacie. Omówimy też przypadki kiedy pewne fazy cyklu życia mogą zostać pomijane. Tak więc… Do dzieła !
Activity i jej Cykl Życia – Narodziny i Śmierć
By lepiej zrozumieć ten temat, na początek podzielimy fazy życia Aktywności (eng. Activity) na trzy części (póki co… w dużym uproszczeniu).
- Pierwszą fazą życia Activity jest jej utworzenie (jej narodziny).
- Kolejnym etapem jest faza działania. Aktywność działa, kiedy jest wyświetlona na ekranie i znajduje się na pierwszym planie (użytkownik może z nią prowadzić interakcje).
- Ostatnią fazą życia Activity jest… jak można się domyślić, jej śmierć. Czyli pod koniec swojego istnienia, zostanie usunięta (lub zniszczona).
Przechodzenie między stanami – Specjalne metody
Okej! Poznałeś już pierwsze fazy cyklu życia Activity. Teraz poznasz metody, które wykonywane są tuż przed przejściem Activity z „jakiegoś” stanu do „jakiegoś” stanu. Możemy przesłaniać takie metody i dodawać w nich swoją funkcjonalność w ramach Activity.
- Metoda onCreate – jest wywoływana kiedy stan aktywności zmienia się na utworzoną. W niej tworzone jest wszystko to co jest potrzebne dla Acivity. Przykładowo wygląd. Możemy też zainicjalizować własne zmienne lub komponenty, które będą używane w naszym Activity.
Metoda onCreate jest wywoływana tylko raz podczas tworzenia Activity.
Ciekawostka: Proces tworzenia Activity jest bardzo kosztowny z punktu widzenia systemu. Z tego powodu onCreate() jest wołany tylko raz. - Metoda onDestroy – jest wywoływana kiedy życie Aktywności dobiega końca – jest niszczona.
Okej. Omówiliśmy dwie z trzech przedstawionych wcześniej faz życia Activity: tworzenie i usuwanie. Teraz skupimy się na fazie jej działania.
Cykl Życia – Faza Działania
Tak jak napisałem na początku: „Aktywność działa, kiedy jest wyświetlona na ekranie i znajduje się na pierwszym planie (użytkownik może z nią prowadzić interakcje).”
Więc aby Aktywność działała musi zostać w pierwszej kolejności utworzona następnie wyświetlona, a na koniec musi zostać wprowadzona na pierwszy plan. Tak więc zostały nam do omówienia dwa tematy: Widoczność oraz „Focus”. Rozpoczniemy od omówienia stanów przeznaczonych dla widoczności Activity.
Cykl Życia – Widoczność Activity
Istnieją trzy podstawowe metody wywoływane, gdy aktywność staje się
widoczna lub gdy znika z ekranu. Są to: onStart(), onStop() oraz onRestart().
- Metoda onStart() jest wywoływana, gdy aktywność ma stać się widoczna dla użytkownika.
- Metoda onStop() jest wywoływana, gdy aktywność ma przestać być widoczna dla użytkownika.
- Metoda onRestart() jest wywoływana, gdy aktywność jest już niewidoczna, ale ma zostać ponownie wyświetlona. Nie jest ona wywoływana podczas wyświetlania aktywności po raz pierwszy.
Przyjrzyjmy się diagramowi. Myślę, że rozjaśni Ci o co w tym wszystkim chodzi 😉
Cykl Życia – Pierwszy plan (focus) Activity
Wiesz już, co się stanie, kiedy aktywność zostanie utworzona i usunięta, a także co się dzieje, gdy aktywność zostanie wyświetlana i ukryta. Brawo! To już prawie koniec 😉 Pozostała nam ostatnia kwestia. Focus czyli pierwszy plan Activity pozwalający nam na interakcję z nią.
Na początek przytoczę Ci przykład kiedy Activity traci swój focus. Mianowicie, może się to stać, gdy nasza aktywność zostanie przesłonięta przez inną, która nie zajmuje całego ekranu albo jest przezroczysta (np. uruchomi się budzik, którego małe okno pojawi się na pierwszym planie).
Istnieją dwie metody cyklu życia aktywności, które są z tym związane: onResume() oraz onPause().
Metoda onResume() jest wywoływana bezpośrednio przed momentem, gdy aktywność wchodzi na pierwszy plan.
Metoda onPause() jest wywoływana, gdy aktywność jest widoczna, lecz traci focus.
A teraz diagram…
To już jest koniec…
I to koniec! Nie było tak trudno prawda? A dla utrwalenia mała ściągawka:
- Narodziny i śmierć Aktywności: onCreate() i onDestroy()
- Zmiany widoczności Aktywności: onStart(), onStop() oraz onRestart()
- Uzyskanie oraz utracenie przez Aktywność pierwszego planu („fokusu”): onResume() i onPause().
PS. wpadnij też po NIESPODZIANKĘ i zapisz się na mailing by nie przegapić maili merytorycznych oraz kolejnych postów 😉