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



我按照以下意图重新启动应用程序:

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

但是重新启动时有"白色"屏幕。

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

您知道如何实现这一目标吗?

您可能无法显示动画进度,但可以创建初始屏幕。它将在重新启动应用程序时设置白色窗口样式。检查这个和这个

要摆脱由于Android冷启动并在应用程序加载到内存时出现的白屏,您可以将以下样式项添加到您的AppTheme中。

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

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

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

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

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

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

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

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

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

最新更新