安卓应用登录流程

3

如何在不闪烁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显示正确的片段(如Facebook的此示例中所示)。
但我认为在这个Facebook示例中滥用了fragments,因为“fragment代表Activity中的一个行为或用户界面的一部分。”(请参见文档),而Login不是MainActivity用户界面的一部分,它有自己的生命周期。此外,我不考虑登录对话框。
2)创建一个“不可见”活动,根据此处建议重定向到正确的活动。
我不明白“不可见活动”是什么意思,因为我尝试了这个解决方案,然后发生了EntryActivity闪烁,然后显示下一个活动。并且一切又重新开始了...
1个回答

1
我最终采用了我的问题中的建议2。我创建了一个带有空白布局的EntryActivity,在显示LoginActivity之前会快速闪烁。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接