poniedziałek, 10 lutego 2014

Cykl życia aplikacji


Kod źródłowy do tej lekcji znajduje się tutaj. Rozpakuj go i zaimportuj. W katalogu z kodem źródłowym znajdą się podkatalogi oznaczone numerami. Są to po prostu kolejne wersje kodu, tworzonego w ramach przykładów. Możesz analizować kolejne kroki tworzenia aplikacji, lub od razu zabrać się za kod z katalogu o najwyższym numerku.

Aktywność może znajdować się w czterech stanach :
1. Jest na pierwszym planie
2. Jest wyświetlana, ale nie znajduje się na pierwszym planie – np. kiedy wyświetlimy jakieś małe okienko z komunikatem
3. Jest wyłączona. Nie działa, nie ma jej w pamięci operacyjnej.
4. Wstrzymana. Nie jest zamknięta, ale też nie jest widoczna. Działa w tle. Tak się stanie kiedy przejdziemy z jednej aktywności do drugiej. Aktywność pozostająca w tym stanie może w każdej chwili zostać zabita przez system, w razie gdyby ten potrzebował pamięci którą ta aktywność wykorzystuje.



Klasa dziedzicząca po klasie Activity będzie dziedziczyła kilka metod które są uruchamiane przy przechodzeniu aktywności między stanami. Możemy je przesłonić. Wprowadź taki kod jak na poniższej ilustracji, uruchom aplikację a następnie pobaw się urządzeniem tj. poobracaj je, zamknij aplikację, otwórz jeszcze raz, naciśnij przycisk „Home” itp. Popatrz co się dzieje podczas wykonywania tych czynności na konsoli LogCat (znajduje się w dolnej części ekranu Eclipse).

'

Metoda onCreate jest wywoływana wtedy, kiedy aktywność jest uruchamiana po raz pierwszy. Z tego powodu to właśnie ją wykorzystuje się najczęściej i to właśnie w niej ustawiamy wygląd ekranu oraz ustawienia początkowe.
Metoda onStop jest wywoływana kiedy aplikacja jest zamykana. Możesz tutaj wprowadzić kod który zapisze stan aplikacji np. do bazy danych.
Metoda onPause jest wywoływana np. kiedy obracamy ekran, a także przed metodą onStop w przypadku zamknięcia aplikacji.
Metoda onResume jest wywoływana również kiedy obracamy ekran, lub przy powrocie do działania po wcześniejszym zapałzowaniu.


Pełen diagram przechodzenia aplikacji przez różne stany (pochodzi z dokumentacji Androida):



4 komentarze:

  1. czy na pewno po każdej metodzie powinna być wywołana metoda onStop() ? Nie ma tu pomyłki?

    OdpowiedzUsuń
  2. Dokładnie. Tam gdzie jest onPause() powinno być super.onPause(); onResume to super.onResume();
    Pytanie: Jak za symulować w symulatorze zamknięcie aplikacji bez wyłączania całego symulatora?

    OdpowiedzUsuń
  3. czy będzie aktualizacja kursu o fragmenty?

    OdpowiedzUsuń
  4. Witam, mam problem. Otóż nie działają mi przyciski funkcyjne w symulatorze androida, wie ktoś jak temu zaradzić? Z góry dziękuje za pomoc i pozdrawiam.

    OdpowiedzUsuń