【发布时间】:2019-02-27 03:45:19
【问题描述】:
我想让我的启动画面更流畅。阅读此link 后,我制作了启动画面。但是,当我完成 SplashActivity 并意图进入 MainActivity 时,我觉得 SplashActivity 完成得太早了,我在 MainActivity 显示之前看到了我的设备的屏幕保护程序(我估计延迟为 0.5s)。我想要的是在 SplashActivity 完成之前准备好 MainActivity。
我尝试了在 Intent 中设置标志 FLAG_ACTIVITY_NEW_TASK 和 FLAG_ACTIVITY_CLEAR_TASK 的解决方案,但它并不顺利。
下面是两个activity之间的转换代码:
private void transitionActivity() {
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
和清单文件:
<activity
android:name=".SplashActivity"
android:launchMode="singleTask"
android:theme="@style/SplashScreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:launchMode="singleTask"
android:theme="@style/AppThemeNoActionBar" />
【问题讨论】:
-
准备好 MainActivity 是什么意思?
-
如果你在主Activity中加载信息,必须在splash中加载,获取后主Activity才能加载该信息。或者,如果您愿意,您可以使用加载对话框来加载异步数据。
-
@KiranMalvi 我想要 MainActivity 的内容视图准备好;因为我希望当我完成 SplashActivity 时,我会看到 MainActivity 而不是我设备的屏幕保护程序(可能是太早完成的原因)。 MainActivity 的内容视图是一个登录表单。
-
@GilbertoIbarra MainActivity 是一个登录表单,所以我不加载任何东西,我只想在完成 SplashActivity 时看到 MainActivity 而不是设备的屏幕保护程序。我知道我看到屏幕保护程序的原因,是因为过早完成 SplashActivity。
-
如果你什么都不加载,问题可能是其他的,也许你的 xml 中有一个大的位图,另一方面,也许你只有一个慢的手机,idk。
标签: android android-intent splash-screen activity-finish