我按照以下意图重新启动应用程序:
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>
作为活动的主题。它将显示给定的可绘制对象而不是白屏。