Как мы все знаем, многие приложения для Android очень ненадолго отображают белый экран, прежде чем они Activity
попадают в фокус. Эта проблема наблюдается в следующих случаях:
Приложения для Android, расширяющие глобальный
Application
класс и выполняют в нем основные инициализации.Application
Объект создается всегда перед первымActivity
(факт , что можно наблюдать в отладчике), так что это имеет смысл. Это причина задержки в моем случае.Приложения Android, отображающие окно предварительного просмотра по умолчанию перед заставкой.
Настройка здесь android:windowDisablePreview = "true"
явно не работает. Я также не могу установить родительскую тему экрана-заставки, Theme.Holo.NoActionBar
как описано здесь , потому что [к сожалению] мой экран-заставка использует файл ActionBar
.
Между тем, приложения, которые не расширяют Application
класс , не показывают белый экран при запуске.
Дело в том, что в идеале инициализации, выполняемые в Application
объекте, должны происходить до того, как Activity
будет показана первая . Итак, мой вопрос: как я могу выполнить эти инициализации при запуске приложения без использования Application
объекта? Возможно, с помощью Thread
или Service
, я полагаю?
Это интересная проблема, над которой стоит задуматься. Я не могу обойти это обычным способом (установив NoActionBar
тему), так как, к сожалению, у моего экрана-заставки есть ActionBar
некоторые причины, не связанные с этим.
Примечание:
Я уже затронул следующие вопросы:
Ссылки:
Application
класса. Это связано с тем, что более новые версии Android используют способ «холодного запуска» приложений. Google фактически рассмотрел время запуска на Google I / O в этом году, и оно будет исправлено на N, насколько я помню. А пока вам стоит взглянуть на то, что Google называет «фирменным экраном запуска». Вот пример того, как его создать: antonioleiva.com/branded-launch-screen - никакого белого экрана в начале ;-) И, пожалуйста, не используйте заставки - это раздражает пользователя.