Android - черный экран в течение 15 секунд после onStart() при возврате к активности

Когда я запускаю свое приложение, если было x неудачных попыток попасть в основную игру, я запускаю «активность в безопасном режиме», где у них есть возможность сбросить или удалить данные сохранения и т. д., которые я запускаю таким образом из своего «Главного " Мероприятия:

Intent intent = new Intent(MainActivity.this, SafeModeActivity.class);
startActivity(intent);

У меня есть кнопка для выхода из безопасного режима и возврата к основному приложению, которое затем вызывает это (логическое значение равно false, чтобы мы снова не входили в безопасный режим):

MainActivity.mbEnterSafeMode = false;
finish();

Это работает нормально, за исключением того, что я получаю черный экран примерно на 15 секунд, прежде чем что-либо отображается на «Главном». Я прошел через код, и OnRestart() и onStart() практически не занимают времени, и если я сломаюсь после этого момента, стека вызовов не будет.

Я видел сообщения о подобных вещах, но большинство из них, похоже, упоминают, что onCreate() занимает некоторое время, но в моем случае это уже было вызвано, поскольку я возвращаюсь к активности. Другие люди упоминают о добавлении темы «Без отображения», но я не уверен, как это мне поможет.

Мой вопрос: что происходит после onStart(), пожалуйста?

Обратите внимание, что я также получаю эту задержку, когда Main запускается нормально, но это не имеет значения, поскольку это происходит до того, как что-либо отображается, но при возврате из безопасного режима что-то отображалось, затем я получаю свой черный экран, а затем титульный экран.

Спасибо, Крис.


person Chris Moore    schedule 06.02.2014    source источник
comment
Вы работаете над методом onResume?   -  person idog    schedule 06.02.2014
comment
Спасибо за ваш ответ @idog. Метод onResume мало что делает и завершается очень быстро. Я только что понял, в чем проблема, и это не связано с этими методами Android. Я опубликую это сейчас как ответ.   -  person Chris Moore    schedule 06.02.2014


Ответы (1)


Оказывается, это никак не связано с функциями Android. По сути, перед выполнением любого рендеринга на первом экране есть функция для инициализации материала, поэтому, пока это происходит, ничего не рендерится. Поэтому я думаю, что мне просто нужно отделить это, чтобы убедиться, что только то, что необходимо для рендеринга, происходит немедленно, а затем выполняется другая инициализация.

person Chris Moore    schedule 07.02.2014
comment
Не могли бы вы уточнить? какие функции вы изменили? - person Royi Benyossef; 24.04.2014
comment
@royiby По сути, когда управление вернулось к моему приложению, я инициализировал множество вещей в функции инициализации первого экрана, прежде чем выполнять какой-либо рендеринг, поэтому во время этого был черный экран. Поэтому я удалил все, что не нужно для рендеринга на тот момент (загрузка профиля, инициализация пакета, диспетчеры моделей и ресурсов и т. д.), и просто сделал это в функции инициализации, чтобы я мог хотя бы что-то визуализировать, пока все остальное инициализировалось (изначально просто фоновая текстура с текстом загрузки), а затем инициализировал все остальное. Надеюсь, это имеет смысл, Крис. - person Chris Moore; 24.04.2014