重新启动应用程序时如何显示进度屏幕?

时间:2018-08-24 12:12:20

标签: android

我确实出于以下意图重启了应用程序:

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

但是重新启动时出现“白色”屏幕。

我想在重新启动应用程序时显示自定义屏幕。

您知道如何实现吗?

4 个答案:

答案 0 :(得分:2)

要摆脱白屏(这是由于Android的冷启动,并在应用加载到内存时出现),您可以将以下样式项添加到AppTheme。 / p>

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

现在,在您的MainActivity启动中,您可以在数据加载到后台并加载后显示progressBar或类似占位符视图的任何内容,隐藏进度/占位符等。您还可以创建一个中间活动/查看类似SplashScreen的内容,以显示在restart Intent上,而不是在progressBar中使用MainActivity

答案 1 :(得分:2)

您可能无法显示动画进度,但是可以创建启动画面。它将为您重新启动应用程序时的白色窗口设置样式。选中thisthis

答案 2 :(得分:0)

我遇到了同样的问题,并通过使用finishAffinity()手动清除了堆栈来解决了这个问题:

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

这样,过渡到MainActivity不会在短时间内显示空白屏幕。 如果需要加载屏幕,则可以使用ProgressBar转到“活动”,并在该活动的onCreate中使用此代码。

我知道这不是最好的解决方案,但这是使它起作用的唯一方法。

答案 3 :(得分:0)

要在活动开始时设置背景可绘制对象,则应使用以下内容:

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

作为活动的主题。它将显示给定的可绘制对象,而不是白色屏幕。