Как отображать экран прогресса при перезапуске приложения?

Я перезапускаю приложение со следующим намерением:

Intent restartIntent = new Intent(context, MainActivity.class);
restartIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
restartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(restartIntent);

Но при перезагрузке есть "белый" экран.

Вместо этого я хочу отображать собственный экран при перезапуске приложения.

Вы знаете, как этого добиться?

Вы смотрели на это? developer.android.com/reference/android/widget/ProgressBar

AutoTester213 24.08.2018 14:15

@Wojtek Приведенная ссылка касается компонента индикатора выполнения. Мне нужно отображать настраиваемый экран при перезапуске приложения.

majov 24.08.2018 14:25

Может быть, это может быть полезно stackoverflow.com/questions/8133118/… и stackoverflow.com/questions/15153345/…

Matteo Ugolotti 24.08.2018 14:33

@MatteoUgolotti спасибо, это не решает мою проблему

majov 24.08.2018 15:05

@WojtekT мой вопрос не об отображении индикатора выполнения при загрузке данных, а об отображении отдельного экрана при перезапуске приложения

majov 27.08.2018 08:02

Вероятно, вы не можете отображать прогресс анимации, но вы можете создать заставку. Он будет стилизовать белое окно, которое у вас есть при перезапуске приложения. Отметьте этот android.jlelse.eu/… и этот plus.google.com/+AndroidDevelopers/posts/Z1Wwainpjhd

Martin Vandzura 27.08.2018 11:54
3
7
241
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

У меня была такая же проблема, и я решил ее, очистив стек вручную с помощью finishAffinity():

Intent restartIntent = new Intent(context, MainActivity.class);
startActivity(restartIntent);
finishAffinity();

Таким образом, переход к MainActivity не отображает пустой экран в течение короткого промежутка времени. Если вам нужен экран загрузки, вы можете перейти к Activity с ProgressBar и использовать этот код в onCreate этого Activity.

Я знаю, что это не лучшее решение, но это единственный способ заставить его работать.

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

 <item name = "android:windowDisablePreview">true</item>

Теперь при запуске MainActivity вы можете отображать progressBar или что-то вроде представления заполнителя, пока ваши данные загружаются в фоновом режиме и после загрузки, скрывать прогресс / заполнители и т. д. Вы также можете создать промежуточное действие / представление что-то вроде SplashScreen, которое будет отображаться на restart Intent вместо использования progressBar в вашем MainActivity.

спасибо, ваш ответ помог мне на некоторое время избавиться от белого экрана перед запуском экрана.

Chirag Jain 27.08.2018 13:39
Ответ принят как подходящий

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

Чтобы установить фоновый рисунок во время запуска активности, вы должны использовать что-то вроде этого:

<style name = "AppTheme.NoActionBar.SplashTheme">
    <item name = "android:windowBackground">@drawable/splash</item>
</style>

в качестве темы мероприятия. Вместо белого экрана он покажет данную возможность рисования.

Другие вопросы по теме