You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用实现引导页仅首次启动显示的方法

解决Android引导页仅首次显示的方案

嗨,这个需求在商用App里太常见啦,咱们用Android自带的SharedPreferences就能完美解决,这是最轻量也最可靠的方案,我给你一步步说清楚怎么做:

第一步:标记用户已完成引导

在引导页末屏的「完成」按钮点击事件里,咱们往SharedPreferences里存一个标记,告诉App用户已经看过引导页了。

示例代码(Java):

// 找到你的完成按钮
Button finishBtn = findViewById(R.id.btn_finish);
finishBtn.setOnClickListener(v -> {
    // 获取SharedPreferences实例,"AppPrefs"是自定义的存储文件名,只要后续统一即可
    SharedPreferences prefs = getSharedPreferences("AppPrefs", MODE_PRIVATE);
    // 编辑存储内容
    SharedPreferences.Editor editor = prefs.edit();
    // 存入布尔值标记,键名"has_seen_onboarding"可自定义
    editor.putBoolean("has_seen_onboarding", true);
    // 异步提交(比commit更高效,适合非紧急存储场景)
    editor.apply();

    // 跳转到MainActivity
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
    // 关闭当前引导页,避免用户按返回键回到引导页
    finish();
});

第二步:启动时判断是否显示引导页

接下来要在App的启动入口(比如你的引导页首屏,或者专门的启动页SplashActivity)添加判断逻辑:启动时先检查SharedPreferences里的标记,如果用户已经看过引导页,直接跳转到MainActivity;没看过才加载引导页。

示例代码(Java,放在引导页首屏的onCreate方法里):

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

    // 先检查引导页标记
    SharedPreferences prefs = getSharedPreferences("AppPrefs", MODE_PRIVATE);
    // 第二个参数是默认值,未找到该键时返回false(表示没看过引导页)
    boolean hasSeenOnboarding = prefs.getBoolean("has_seen_onboarding", false);

    if (hasSeenOnboarding) {
        // 直接跳转到MainActivity
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        // 关闭当前页面,不加载引导页布局
        finish();
        return;
    }

    // 如果没看过引导页,正常加载当前引导页的布局
    setContentView(R.layout.activity_onboarding_first);
}

额外优化:版本更新后重新显示引导页

如果以后你的App做大版本更新,需要让老用户再看一次新的引导页,可以加个版本号判断的逻辑:

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

    SharedPreferences prefs = getSharedPreferences("AppPrefs", MODE_PRIVATE);
    boolean hasSeenOnboarding = prefs.getBoolean("has_seen_onboarding", false);

    try {
        // 获取当前App的版本号
        PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
        int currentVersion = packageInfo.versionCode;
        int savedVersion = prefs.getInt("app_version", 0);

        // 如果版本号不一致,说明是更新后的首次启动,重置引导页标记
        if (currentVersion != savedVersion) {
            prefs.edit()
                .putBoolean("has_seen_onboarding", false)
                .putInt("app_version", currentVersion)
                .apply();
            hasSeenOnboarding = false;
        }
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }

    // 后续跳转判断逻辑和之前一致
    if (hasSeenOnboarding) {
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
        return;
    }

    setContentView(R.layout.activity_onboarding_first);
}

这样就完美解决啦,既保证首次启动显示引导页,又能在版本更新时灵活控制是否重新显示~

内容的提问来源于stack exchange,提问作者Giovanka Bisano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:48:20