android - 闪屏显示不止一次

标签 android splash-screen

启动画面应该只在安装应用时出现一次。

安卓 list

<activity android:name=".Splash"
        android:noHistory="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

飞溅.java

public class Splash extends AppCompatActivity {

private static boolean splashLoaded = false;

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

    if (!splashLoaded) {
        setContentView(R.layout.splash);
        int secondsDelayed = 5;
        new Handler().postDelayed(new Runnable() {
            public void run() {
                startActivity(new Intent(Splash.this, MainActivity.class));
                finish();
            }
        }, secondsDelayed * 500);

        splashLoaded = true;
    }
    else {
        Intent goToMainActivity = new Intent(Splash.this, MainActivity.class);
        goToMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(goToMainActivity);
        finish();
    }
}
}

但我的即使在我输入 android:noHistory="true" 后也不起作用 还有什么我应该补充的吗?

最佳答案

public class Splash extends AppCompatActivity {

    private static boolean splashLoaded = false;
    SharedPreferences prefs;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        prefs = PreferenceManager.getDefaultSharedPreferences(this);

        splashLoaded = prefs.getBoolean("Splash_Loaded", false);

        if (!splashLoaded) {
            setContentView(R.layout.splash);
            int secondsDelayed = 5;
            new Handler().postDelayed(new Runnable() {
                public void run() {
                    startActivity(new Intent(Splash.this, MainActivity.class));
                    finish();
                }
            }, secondsDelayed * 500);

            splashLoaded = true;
            SharedPreferences.Editor editor = prefs.edit();
            editor.putBoolean("Splash_Loaded", true);
            editor.apply();
        } else {
            Intent goToMainActivity = new Intent(Splash.this, MainActivity.class);
                goToMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            startActivity(goToMainActivity);
            finish();
        }
    }
}

关于android - 闪屏显示不止一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38804746/

相关文章:

javascript - 如何锁定屏幕以防止在 steroids.js 中旋转 - AppGyver 移动应用程序

android - 是否可以创建一个 OnClickListener 来处理 ToggleButton 和 Switch

android - PWA Android/chrome 启动画面上显示的错误图标

android - 最佳 Unity Android 启动图像分辨率

delphi - Delphi 7 创建动画启动画面

android - 如何使用房间从没有主键的表迁移?

android - 为什么没有用于获取当前 Activity 的Android API?

java - 如何使用非 ISO 3166 国家/地区(如 en_UK)创建货币实例?

python - Tkinter 启动画面和主循环外的多处理

android - 如何为启动画面添加不同的图像