Як ми всі знаємо, багато додатків для 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 - це дратує користувача.


