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

如何为无布局Intro Slider实现首次启动判断Session?

解决Intro Slider首次启动逻辑无效的问题

我仔细看了你的代码,问题主要出在两个关键环节:你提到添加的Session判断逻辑并没有出现在提供的IntroActivity完整代码里,另外就算加了判断,也没在引导页完成后正确标记首次启动状态。下面是具体的修复方案:

1. 在IntroActivity的onCreate中加入首次启动判断

你需要在super.onCreate(savedInstanceState)之后、添加引导页slide之前就完成首次启动判断——如果不是首次打开,直接跳转到MainActivity,避免加载引导页内容。修改后的onCreate代码如下:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    // 新增:初始化Session并判断是否首次启动
    Session session = new Session(this);
    if (!session.isFirstTimeLaunch()) {
        launchHomeScreen();
        return; // 必须加return,阻止后续引导页内容加载
    }

    setSkipButtonVisible();
    enableLastSlideAlphaExitTransition(true);
    addSlide(new SlideFragmentBuilder()
            .backgroundColor(R.color.bg_screen1)
            .buttonsColor(R.color.btn_screen1)
            .image(R.drawable.welcome_slider_1)
            .title(getString(R.string.intro_title1))
            .description(getString(R.string.intro_desc_title1))
            .build());
    addSlide(new SlideFragmentBuilder()
            .backgroundColor(R.color.bg_screen2)
            .buttonsColor(R.color.btn_screen2)
            .image(R.drawable.welcome_slider_2)
            .title(getString(R.string.intro_title2))
            .description(getString(R.string.intro_desc_title2))
            .build());
    addSlide(new SlideFragmentBuilder()
            .backgroundColor(R.color.bg_screen3)
            .buttonsColor(R.color.btn_screen3)
            .image(R.drawable.welcome_slider_3)
            .title(getString(R.string.intro_title3))
            .description(getString(R.string.intro_desc_title3))
            .build());
}

2. 在引导页完成时标记首次启动状态

原来的onFinish方法只做了页面跳转,没有调用session.setFirstTimeLaunch(false),导致用户看完引导页后,下次打开依然会显示引导页。修改后的onFinish方法:

@Override
public void onFinish() {
    Session session = new Session(this);
    session.setFirstTimeLaunch(false); // 标记首次引导已完成
    Intent intent = new Intent(IntroActivity.this, MainActivity.class);
    startActivity(intent);
    finish();
}

3. 补充实现launchHomeScreen方法

你提到了这个方法但原代码里没有实现,需要把它加入IntroActivity中:

private void launchHomeScreen() {
    startActivity(new Intent(IntroActivity.this, MainActivity.class));
    finish();
}

额外测试提示

  • 测试前记得卸载app重新安装,避免旧的SharedPreferences缓存影响结果;
  • 你的Session类逻辑是正确的:默认首次启动返回true,写入状态的方法也没问题,不用修改。

这样调整后,首次打开app会显示引导页,完成引导(点击完成按钮或跳过)后,后续打开就会直接进入MainActivity了。

内容的提问来源于stack exchange,提问作者Kurniawan Alcantara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:48:18