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

如何使用SharedPreferences保存应用最后操作的Activity并实现重启跳转

实现Java中保存最后操作Activity的方法

核心思路

利用SharedPreferences存储用户最后操作的Activity类名,在启动页(1.java)启动时读取该值,自动跳转到对应的Activity。

步骤1:在每个Activity中保存当前类名

在1.java、2.java、3.java的onDestroy()方法中添加保存逻辑,确保用户退出时记录最后停留的页面:

@Override
protected void onDestroy() {
    super.onDestroy();
    // 获取SharedPreferences实例,"LastActivity"为存储文件的名称
    SharedPreferences sp = getSharedPreferences("LastActivity", MODE_PRIVATE);
    // 存入当前Activity的完整类名
    sp.edit().putString("last_activity", getClass().getName()).apply();
}

步骤2:在启动页(1.java)中实现自动跳转

在1.java的onCreate()方法里读取存储的类名,判断并跳转到最后操作的页面:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_1);

    SharedPreferences sp = getSharedPreferences("LastActivity", MODE_PRIVATE);
    String lastActivityName = sp.getString("last_activity", null);

    // 如果存在保存的类名,且不是当前启动页,执行跳转
    if (lastActivityName != null && !lastActivityName.equals(getClass().getName())) {
        try {
            // 通过反射获取目标Activity的Class对象
            Class<?> targetActivity = Class.forName(lastActivityName);
            Intent intent = new Intent(this, targetActivity);
            startActivity(intent);
            // 跳转完成后关闭启动页
            finish();
        } catch (ClassNotFoundException e) {
            // 若类不存在(比如代码修改后类名变更),则留在启动页
            e.printStackTrace();
        }
    }
}

注意事项

  • MODE_PRIVATE表示该SharedPreferences仅当前应用可访问,保证数据安全。
  • 使用apply()提交修改而非commit(),apply()是异步操作,不会阻塞主线程,更适合这种场景。
  • 如果用户在启动页(1.java)直接退出,下次打开仍会进入1.java,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:25:16