Jak wszyscy wiemy, wiele aplikacji na Androida wyświetla bardzo krótko biały ekran, zanim pojawi się ich pierwszy Activity
. Ten problem jest obserwowany w następujących przypadkach:
Aplikacje na Androida, które rozszerzają
Application
klasę globalną i wykonują w nich główne inicjalizacje.Application
Przedmiot jest zawsze tworzona przed pierwsząActivity
(fakt, że można zaobserwować w debuggera), więc ma to sens. To jest przyczyna opóźnienia w mojej sprawie.Aplikacje na Androida, które wyświetlają domyślne okno podglądu przed ekranem powitalnym.
Ustawienie android:windowDisablePreview = "true"
oczywiście nie działa tutaj. Nie mogę też ustawić motywu nadrzędnego ekranu powitalnego Theme.Holo.NoActionBar
zgodnie z opisem tutaj , ponieważ [niestety] mój ekran powitalny korzysta z pliku ActionBar
.
Tymczasem aplikacje, które nie rozszerzają Application
klasy , nie wyświetlają białego ekranu podczas uruchamiania.
Chodzi o to, że idealnie inicjalizacje wykonywane w Application
obiekcie muszą nastąpić przedActivity
pokazaniem pierwszej . Moje pytanie brzmi więc, jak mogę wykonać te inicjalizacje podczas uruchamiania aplikacji bez użycia Application
obiektu? Prawdopodobnie używając Thread
lub Service
, jak przypuszczam?
To ciekawy problem do przemyślenia. Nie mogę tego ominąć w zwykły sposób (ustawiając NoActionBar
motyw), ponieważ tragicznie mój ekran powitalny ma w rzeczywistości ActionBar
jakieś niepowiązane przyczyny.
Uwaga:
Odniosłem się już do następujących pytań:
Bibliografia:
Application
klasy nadal jest to problem . Jest to spowodowane sposobem „zimnego uruchamiania” aplikacji w nowszych wersjach Androida. Google faktycznie zajął się terminami uruchomienia Google I / O w tym roku i zostanie to naprawione w N z tego, co pamiętam. W międzyczasie powinieneś przyjrzeć się temu, co Google nazywa „markowym ekranem startowym”. Oto przykład jak go stworzyć: antonioleiva.com/branded-launch-screen - koniec z białym ekranem na początku ;-) I proszę, nie używaj splashscreenów - to denerwuje użytkownika.