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

时间:2015-07-07 14:59:59

标签: 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();
    }
}

提前致谢。

修改

这就是我在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>

1 个答案:

答案 0 :(得分:13)

您可以尝试在意图

上设置FLAG_ACTIVITY_NO_ANIMATION
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);

和/或在调用finish()

后调用overridePendingTransition(0, 0)

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