Як ми всі знаємо, багато додатків для Android відображають білий екран дуже коротко, перш ніж їх перший Activity
прийшов у фокус. Ця проблема спостерігається в таких випадках:
Додатки для Android, що розширюють глобальний
Application
клас та виконують основні ініціалізації в ньому.Application
Об'єкт створюється завжди перед першимActivity
(факт , що можна спостерігати в отладчике), так що це має сенс. Це причина затримки в моєму випадку.Програми для Android, які відображають вікно попереднього перегляду за замовчуванням перед екраном заставки.
Налаштування, android:windowDisablePreview = "true"
очевидно, тут не працює. Я також не можу встановити батьківську тему екрану заставки, Theme.Holo.NoActionBar
як описано тут , оскільки [на жаль] мій екран сплеску використовує ActionBar
.
Тим часом додатки, які не розширюють Application
клас , не роблять показують білий екран при запуску.
Вся справа в тому, що в ідеалі ініціалізації, що виконуються в Application
об'єкті, повинні відбуватися до того, Activity
як будуть показані перші . Отже, моє запитання полягає в тому, як я можу виконати ці ініціалізації при запуску програми без використання Application
об'єкта? Можливо, використовуючи Thread
або Service
, я думаю, що?
Це цікава проблема, про яку слід подумати. Я не можу обійти його звичайним способом (встановивши NoActionBar
тему), оскільки трагічно мій екран Splash насправді ActionBar
пов'язаний із деякими непов'язаними причинами.
Примітка:
Я вже звертався до таких питань:
Список літератури:
Application
класу. Це пов’язано з новішими версіями Android способу "холодного запуску" додатків. Google фактично вирішив час запуску в Google I / O цього року, і це буде фіксовано в N від того, що я пам’ятаю. Тим часом слід переглянути, як Google називає "фірмовий стартовий екран". Ось приклад того, як його створити: antonioleiva.com/branded-launch-screen - на початку більше немає білого екрана ;-) І, будь ласка, не використовуйте splashscreens - це дратує користувача.