如何在不闪烁MainActivity的情况下要求用户登录?
我有两个活动:LoginActivity和MainActivity。让我们从我的AndroidManifest.xml开始:
<activity
android:name=".app.MainActivity"
android:logo="@drawable/logo_bw" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
MainActivity负责检查用户是否已登录:
@Override
protected void onResumeFragments() {
super.onResumeFragments();
if (isAuthenticated()) {
showFragment(HOME, false);
} else {
startActivityForResult(new Intent(this, LoginActivity.class), LOGIN_REQUEST);
}
}
当用户未登录时(例如,第一次使用我的应用程序),此代码在显示LoginActivity之前会闪烁MainActivity。
我认为我有两种方法可以解决这个问题:
1)将LoginActivity转换为LoginFragment并让MainActivity显示正确的片段(如this example from facebook中所示)
但我觉得片段在这个facebook样本中很有用,因为“片段代表了一个Activity中的行为或用户界面的一部分。” (参见documentation)并且Login不是MainActivity用户界面的一部分,具有自己的生命周期。 此外,我不会考虑登录对话框。
2)创建“隐身”活动,根据建议重定向到正确的活动here
我不明白“隐形活动”是什么意思,因为我尝试了这个解决方案,所发生的事情是在显示下一个活动之前忽略了EntryActivity。这一切都重新开始......
答案 0 :(得分:1)
我最后从我的问题中做了建议2。我创建了一个带有空白布局的EntryActivity,在显示LoginActivity之前会快速闪烁。