Witajcie.
Tworzę aplikację dla platformy Android przy pomocy środowiska Android Studio 2.1.2.
Ponieważ aplikacja się rozrosła to skutkiem tego jej czas uruchamiania się zwiększył(sporo się dzieje w onCreate).
Z ciekawości oprogramowałem również zdarzenia(dodałem im tylko Log.d) onStart, onRestar, onPostCreate, onResumeonPause i onDestroy.
Przeanalizowałem, które zdarzenia kiedy są wywoływane(w kontekście klawiszy "home", "back" i "task manager").
Skutkiem tego było moje zdziwienie gdy zobaczyłem co się dzieje podczas uruchamiania aplikacji.
Moje pytanie brzmi - dlaczego część zdarzeń wykonuje się dwukrotnie?
Aplikacja ma jedno Active, jedną klasę, nie ma wątków, kreuje tylko sporo klawiszy z obrazkami i kilka większych bitmap.
Nie mam pomysłu dlaczego aplikacja w trakcie uruchamiania "odpala" mi zdarzenia onResume(to jeszcze bym zrozumiał), onPause, oraz całkiem nie mam pomysłu dlaczego uruchamia onDestroy - aby następnie ponownie wykonać onCreate itd.
Poniższe zachowanie jest identyczne na dwóch różnych wersja Android'a i na różnych urządzeniach.
Oto kopia z monitoringu
08-13 16:47:54.223 7247-7247/...................... D/DEBUG2: MainActivity.onCreate
08-13 16:47:54.751 7247-7247/...................... D/DEBUG2: MainActivity.onStart
08-13 16:47:54.751 7247-7247/...................... D/DEBUG2: MainActivity.onPostCreate
08-13 16:47:54.751 7247-7247/...................... D/DEBUG2: MainActivity.onResume
08-13 16:47:54.797 7247-7247/...................... D/DEBUG2: MainActivity.onPause
08-13 16:47:54.797 7247-7247/...................... D/DEBUG2: MainActivity.onDestroy
08-13 16:47:54.811 7247-7247/...................... D/DEBUG2: MainActivity.onCreate
08-13 16:47:54.986 7247-7247/...................... D/DEBUG2: MainActivity.onStart
08-13 16:47:54.986 7247-7247/...................... D/DEBUG2: MainActivity.onPostCreate
08-13 16:47:54.987 7247-7247/...................... D/DEBUG2: MainActivity.onResume
Domyślam się, że jest to jedna z przyczyn długiego uruchamiania bo bez sensu dwa razy kreuje obiekty.
Niemniej oczywiście błędów nie ma. Ale pamięć RAM pożera strasznie.