我确实出于以下意图重启了应用程序:
Intent restartIntent = new Intent(context, MainActivity.class);
restartIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
restartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(restartIntent);
但是重新启动时出现“白色”屏幕。
我想在重新启动应用程序时显示自定义屏幕。
您知道如何实现吗?
答案 0 :(得分:2)
要摆脱白屏(这是由于Android的冷启动,并在应用加载到内存时出现),您可以将以下样式项添加到AppTheme
。 / p>
<item name="android:windowDisablePreview">true</item>
现在,在您的MainActivity
启动中,您可以在数据加载到后台并加载后显示progressBar
或类似占位符视图的任何内容,隐藏进度/占位符等。您还可以创建一个中间活动/查看类似SplashScreen
的内容,以显示在restart Intent
上,而不是在progressBar
中使用MainActivity
。
答案 1 :(得分:2)
答案 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>
作为活动的主题。它将显示给定的可绘制对象,而不是白色屏幕。