2012-09-17 22 views
6

Powiel możliwe:
Difference between onCreate() and onStart()?
Android Activity Life Cycle - What are all these methods for?OnCreate() vs onStart()

Jaka jest różnica między onCreate i onStart?

Rozumiem, że funkcja OnCreate jest wywoływana tylko przy pierwszym otwarciu aplikacji i nigdy nie jest wywoływana ponownie. Czy to prawda? Czy ktoś może rozwinąć własne słowa, a nie kopiować i wklejać definicję? Dziękuję Ci!

+0

http://developer.android.com/reference/android/app/Activity.html – sissonb

+0

http://stackoverflow.com/questions/8515936/ android-activity-life-cycle-what-are-all-these-methods -to – asteri

+0

"Moje rozumienie OnCreate jest wywoływane tylko przy pierwszym otwarciu ** aplikacji **. - Nie należy mylić wyrażeń "aplikacja", "aplikacja" i "działanie". Aplikacja może nadal działać, nawet gdy 'Activity' zostanie zniszczona, a po zniszczeniu' Activity' zostanie ponownie 'utworzona', a zatem 'onCreate (...)' zostanie wywołane ponownie niezależnie od tego, czy inne składniki aplikacji są nadal biegnie lub nie. – Squonk

Odpowiedz

8

Dopóki urządzenie nie zabije aktywności, na przykład z powodu niskich zasobów systemowych, za każdym razem, gdy opuścisz aplikację i wrócisz, zostanie wywołana funkcja onStart. Jeśli jednak proces aplikacji zostanie zabity, to po powrocie onCreate zostanie wywołany ponownie, ponieważ wszystkie zasoby zostaną zwolnione.

+0

Nie technicznie prawdziwe, kiedy mówisz "stracić ostrość", może się to zdarzyć, gdy pojawi się okno podręczne (okno dialogowe). "Aktywność" będzie nadal widoczna i zostanie po prostu wstrzymana, a nie zatrzymana. Kiedy popup zostanie zamknięty, podstawowe "Działanie" zostanie wznowione. – Squonk

+1

Usunięto część z przegraną. – DaveJohnston

0

Najlepiej można to wytłumaczyć, zaczynając od przeciwnych funkcji: onDestroy i onStop.

onDestroy jest wywoływany, gdy działanie jest usuwane lub zamykane. Przy następnym otwarciu zostanie wywołana funkcja onCreate.

Funkcja onStop jest wywoływana za każdym razem, gdy aplikacja wychodzi z widoku i nie jest już widoczna. Zwykle jest to spowodowane utworzeniem nowej aktywności nad starą. Gdy aktywność staje się ponownie widoczna, wywoływana jest funkcja onStart.

schemat na tej stronie robi naprawdę dobrą robotę wyjaśniania różnych stanów działalność może być, wraz z odpowiednimi metodami transformacji: http://developer.android.com/training/basics/activity-lifecycle/starting.html

6

Dokumentacja poważnie - nie jestem żartuję - ma a very, very pretty image opisuje, w jaki sposób działa cykl życia Activity (jak to się zaczyna, działa i kończy).

Obraz, bezpośrednio związane here, w zasadzie mówi to:

  • onCreate() jest wywoływana, gdy Activity jest tworzony; to znaczy, że jest uruchamiany lub uruchamiany. (Dodatkowo wyzwala to po zmianie orientacji.) Jest wywoływany ponownie, gdy proces jest zabijany, a następnie wraca do.
  • onStart() to nazywane po uruchomieniu onCreate(). Dodatkowo jest również wywoływana, gdy aplikacja jest ponownie odtwarzana po onStop() (i po onRestart()), która pojawia się po tym, jak Activity nie jest już widoczny (co jest widoczne w czasie, gdy "użytkownik może zobaczyć aktywność na ekranie, chociaż nie może znajdować się na pierwszym planie i wchodzić w interakcje z użytkownikiem ").

Schemat szczerze wyjaśnia to lepiej niż ja w mniej niż 1000 słów.

+3

"onStop() jest wywoływana po onCreate() podczas uruchamiania." ... Edycja tego bym był, gdybym był tobą. ;) – Squonk

+0

Awesome! Dziękuję bardzo Eric! Jeszcze jedno pytanie dla ciebie; Czy potrzebuję; setContentView (R.layout.activity); w OnStart? Czy jest to zbędne, ponieważ już mam go na moim OnCreate? –

+0

@Squonk Dlaczego? Jest to absolutnie prawdziwe, chyba że 'finish()' zostanie wywołany przed zakończeniem 'onCreate()'. – Eric

0

Ta strona stanowi solidną reprezentację graficzną Android cyklu: http://developer.android.com/training/basics/activity-lifecycle/starting.html

onStart() jest wywoływana gdy aplikacja staje się widoczny. Obejmuje to, kiedy aplikacja jest tworzona po raz pierwszy i kiedy jest przywracana na ekranie bez przerwania.To drugie zachowanie występuje, gdy użytkownik przełącza aplikacje, a aplikacja siedzi w tle. Gdy aplikacja staje się niewidoczna, wywoływana jest nazwa onStop(), ale gdy aplikacja jest całkowicie "zniszczona", wywoływana jest nazwa onDestroy(). Po wywołaniu onDestroy(), aplikacja musi zostać utworzona ponownie na początku cyklu życia.

Należy pamiętać, że onStart() nie jest wywoływane po tym, jak aplikacja traci ostrość z powodu czegoś w rodzaju okna dialogowego. W takich sytuacjach wywoływana jest nazwa onPause(), a następnie onResume(), gdy ostrość jest odzyskiwana.

1

Prawie. onCreate jest zwykle wywoływana, gdy aplikacja się uruchamia, ale można ją również wywołać, jeśli działanie zostanie zniszczone/zwolnione z innych powodów. Zasadniczo, jeśli chcesz zrobić jednorazową konfigurację dla działania, powinieneś zastąpić onCreate. Jeśli chcesz coś zrobić za każdym razem, gdy użytkownik przejdzie do działania, powinieneś zastąpić onStart. Jeśli chcesz coś zrobić za każdym razem, gdy aktywność stanie się widoczna/aktywna, użyj funkcji onResume. Jeśli chcesz zrobić jednorazową konfigurację dla całej aplikacji, tj. Uruchamia się tylko raz, powinieneś użyć polecenia onCreate, ale sprawdź, czy wykonałeś tę konfigurację, i czyń to tylko, jeśli tego nie zrobiłeś.

Zapoznaj się bardzo przydatny schemat na tej stronie: Activity reference

Powiązane problemy