条件下启动活动会在屏幕上产生闪烁

Sam*_*Sam 2 android android-activity

我有一个无UI MainActivity,它拥有一定的逻辑来确定用户是否已经登录.如果用户已登录,我将启动HomeActivity,如果没有,则启动LoginActivity.即使逻辑工作正常,我也看到它MainActivity在切换到所需活动之前确实开始了一段时间.有没有办法避免MainActivity完全提起,因为它会引起烦人的闪烁?

这是我的代码(省略逻辑) -

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (condition) {
            intent = new Intent(this, HomeActivity.class);
        } else {
            intent = new Intent(this, LoginActivity.class);
        }

        startActivity(intent);
        finish();
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

编辑

这是我在我的Android清单中所拥有的 -

    <activity
        android:name="org.step.main.MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleInstance" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

Mal*_*han 14

您可以尝试在意图上设置FLAG_ACTIVITY_NO_ANIMATION

intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
Run Code Online (Sandbox Code Playgroud)

和/或overridePendingTransition(0, 0)调用完成后调用()

您还可以使用Fragments替换活动 - 将MainActivity与全屏scontainer一起替换为登录片段或Home Fragment.