Kiedy zaczynasz programować w języku takim jak C ++ lub Java, pierwszą rzeczą, której się uczy, jest główna metoda, punkt, który system operacyjny wywoła, gdy uruchomimy naszą aplikację.
W Androidzie nie ma głównej metody jako takiej, ale istnieje kilka metod naszej aktywności, które zostaną wywołane przez SSOO, gdy wystąpią ważne wydarzenia. W tym rozdziale przeanalizujemy szczegółowo, czym są te wydarzenia i jak to działa. cały cykl działania Androida. Oficjalna dokumentacja oferuje obszerne wyjaśnienie tego tematu, tutaj przeanalizujemy najważniejsze elementy wraz z kilkoma typowymi błędami podczas ich obsługi.
Cykl życia Androida przebiega według następującego schematu:
Wydarzenia w cyklu życia
- onCreate (pakiet)
- Reprezentuje moment, w którym działanie jest tworzone. Ta metoda jest zwykle generowana przez kreatora podczas tworzenia nowego działania w systemie Android i tam utworzymy wszystko, czego będzie potrzebować działanie. Jeśli wcześniej zapisaliśmy dane aktywności w obiekcie Bundle, możemy go użyć do ich ponownego wygenerowania. Zwykle nie będziemy go używać.
- onStart ()
- Działanie będzie kontynuowane być na ekraniechoć niekoniecznie widoczne. Jeśli dojdziemy z przystanku, najpierw przejdziemy przez onRestart ().
- onRestart ()
- Poprzednio do onStart (), gdy pochodzimy z wywołania onStop ().
- onResume ()
- Aktywność się rozpocznie reagować na interakcję użytkownik.
- onPause ()
- Aktywność będzie przestań odpowiadać do interakcji użytkownika.
- onStop ()
- Aktywność przeszła całkowicie do tło.
- onDestroy ()
- Czynność zostanie zniszczony i uwolnione zasoby.
Kiedy będziemy musieli wdrożyć jedną z tych metod, zrobimy to dodając do naszej działalności następujące profile:
public class MyActivity extends Activity {protected void onCreate (BundleainedInstanceState) {super.onCreate (saveInstanceState); ...} protected void onStart () {super.onStart (); ...} protected void onRestart () {super.onRestart (); ...} protected void onResume () {super.onResume (); ...} chronione void onPause () {... super.onPause (); } protected void onStop () {... onStop (); } chronione void onDestroy () {... super.onDestroy (); }}
Ważne jest, aby zachować wywołanie metody nadklasy aby nie napotkać niespodzianek. Zadania każdego wydarzenia, które są ponad naszą działalnością, muszą być utrzymane. To wywołanie przejdzie na początek zdarzeń wejściowych i na koniec zdarzeń wyjściowych. W ten sposób unikniemy niespodzianek, ponieważ elementy aktywności, których potrzebujemy, ale które nie będą pod naszą kontrolą, zostaną utworzone przed ich użyciem, a następnie zostaną zniszczone.
Nie musimy dodawać wszystkich wydarzeńte, których nie potrzebujemy, będą używać domyślnej implementacji. Metody, których będziemy często używać - i nie zaleca się dotykania innych - to onCreate, onPause i onRestart.
Znaczenie onCreate jest jasne: jest to miejsce, w którym załadujemy potrzebne nam zasoby, widoki i wszystko, czego potrzebujemy. W przypadku wyjścia jedyną metodą, na której się skupimy, jest onPause. Powodem unikania onStop i onDestroy jest to, że nie mamy nad nimi żadnej kontroli. onPause będzie działać za każdym razem, gdy aplikacja wyjdzie z pierwszego planu, podczas gdy pozostałe dwa zostaną uruchomione przez system operacyjny w zależności od Twoich potrzeb. Mogą nigdy nie zostać straceni! Ma to na celu uniknięcie kosztów wielokrotnego tworzenia działania, jeśli przejdziemy od działania na pulpit i odwrotnie, a system operacyjny zwolni wykorzystane zasoby tylko wtedy, gdy ich potrzebuje, i nie musi zajmować się wszystkimi. otwarte procesy.
Oznacza to, że założymy, że aplikacja umrze po wykonaniu onPause i że należy do nas ostatnia szansa na zapisanie danych które musimy zapisać i zatrzymać usługi, z których korzystamy, takie jak geolokalizacja. Jeśli zatrzymaliśmy usługi, odpowiednim miejscem do ich ponownego uruchomienia jest Restart.
Innych metod nie będziemy musieli używać zbyt wiele. Częstym przypadkiem, w którym będziemy go potrzebować, będzie integracja bibliotek zewnętrznych, takich jak Facebook czy Flurry. W takich przypadkach zostaniemy poproszeni o dopasowanie metod naszej działalności do Twojego kodu. Na przykład, aby zarejestrować sesję Flurry, zostaniemy poproszeni o rozpoczęcie sesji w metodzie onStart.
Kilka przydatnych pomysłów
- Pamiętaj, do czego służy każde wydarzenie. Zawsze będziesz potrzebować onCreate, a często będziesz potrzebować onPause i onResume, aby zatrzymać i ponownie uruchomić najbardziej zużywające się usługi.
- Nie dotykaj innych wydarzeń jeśli nie potrzebujesz tego wyraźnie.
- Nie ufaj zatrzymywaniu się i niszczeniu, mogą nigdy nie zostać wezwani. Zapisz wszystko, czego potrzebujesz w onPause.
- Unikaj używania nieostatecznych zmiennych statycznych. Aplikację można nadal załadować po powrocie i zachowają one wartości, które pozostawili. Jeśli nie masz innego wyjścia, jak ich użyć, pamiętaj, aby zresetować ich wartości po powrocie na pierwszy plan.
Więcej informacji - Podstawowy przewodnik po programowaniu w systemie Android