РедактироватьAndroid SplashScreen без создания нового вида деятельности
После перемещения моего кода загрузки/создания к асинхронному задаче (см ниже) - я до сих пор первоначальным проблемы, которые я имел с моим оригинальным SplashScreen.
Те в том, что:
1) При запуске задачи Async в OnCreate, все загружается, но мой диалог может быть показан только тогда, когда OnStart() вызывается, что делает весь процесс своего рода бессмысленно, поскольку там это длинная пауза с пустым экраном, после того, как все загрузилось, перед тем, как исчезнуть, начнет мигать диалог «загрузка».
2) Я не могу перемещать загрузку/создание объекта и т. Д. В onStart, потому что он будет запущен снова, даже когда приложение будет возобновлено после отправки на задний план, который я не хочу, и б) когда при вызове восстановления сохраненногоInstanceState в onCreate() я получаю исключение nullPointerException, потому что я восстанавливаю свойства объектов, которые еще не были созданы.
Было бы очень полезно, если бы кто-нибудь мог посоветовать, как обойти эти проблемы и создать простой заставку. Благодаря!
фон
Мое приложение использует только один вид деятельности, и я хотел бы сохранить его таким образом, если это возможно.
Я боролся с этим больше недели, поэтому надеюсь, что кто-то может мне помочь.
Все, что я хочу сделать, это использовать SplashScreen с простым сообщением «загрузки» отображаются на экране во время загрузки мои ресурсы (и создаются объекты и т.д.) Есть несколько пунктов:
Условия
1) SplashScreen должен не иметь свою собственную деятельность - все должно содержаться в одиночной деятельности
2) SplashScreen должен не используйте XML-макет (я создал класс Splashscreen, который использует View для отображения загружающего PNG)
3) Мое приложение - openGL ES 2.0, поэтому текстуры необходимо загружать в поток OpenGL (создание объектов и т. д., которые не 't использовать вызовы GL - это нормально, если нужно, при необходимости использовать другой поток).
То, что я пытался до сих пор
То, что я сделал до сих пор было создать диалоговое окно и отобразить его в моем OnStart() метод с:
Dialog.show();
тогда пусть все нагрузки в мой onSurfaceCreated метод перед тем, как избавиться от него с:
Dialog.dismiss();
Однако мне нужно было изменить это по причинам varioius так что теперь я Ĉ повторно привяжите мои объекты к вызову в моем методе onCreate() и просто загрузите текстуры в мой метод GLS Renderer onSurfaceCreated.
Однако, это означает, что, поскольку диалог не отображается до тех пор, после OnCreate, я все еще получаю задержку (пустой экран) в то время как все создано перед тем плеск экран отображается, это то остается на до тех пор, пока текстуры не загрузятся. Есть и другие проблемы, которые могут подождать еще один день!
Таким образом, мой подход неправдоподобен. Я читал каждый урок, который мог, и каждый связанный с заставкой вопрос, который я мог найти на SO и Gamedev.SE, но я все еще не могу найти объяснения (что имеет смысл для меня), как это можно достичь.
Я надеюсь, что кто-то здесь сможет объяснить.
У вас есть попытки использовать фрагменты? – amalBit