在应用程序重新启动时从一个 activity 获取数据并存储在另一个 activity

Getting data from one activity and storing in another activity at app relaunch

我有一个游戏 activity 用户可以通过点击按钮获得积分。我想要做的是将这些点传递给主要 activity,即用户看到的第一个 activity。因此,例如,用户进入游戏 activity,获得一些积分并完全退出应用程序。当他们重新启动应用程序时,他们可以看到他们在主 activity 上拥有的总点数。

我正在使用 startActivityForResults 从游戏 activity 中获取数据,而在主 activity 中,但我遗漏了一些东西。我想我需要在游戏 activity 中保存积分,以便在重新启动应用程序时获取存储的积分。我正朝着正确的方向前进吗?如果是这样,我该如何保存积分?

我的另一个想法是在游戏 Activity 中,当用户获得积分时,积分会立即发送到主 activity 并保存在那里。当用户重新启动应用程序时,main activity 不需要去 Game Activity 中查找点数,它们已经存储在 main activity 中。这种方式相同、更好还是更差?

我想你想用的是SharedPreferences。它们可从所有活动访问,并在应用程序重新启动时保留数据。 在您的 MainActivity 中,您可以签入 onResume() 是否有用户在 GameActivity 中获得(并且您已保存)的新数据/新分数。

Here's a guide 关于如何使用 SharedPreferences。顺便提一句。别被名字给骗了,用它们可以拯救各种东西,不只是'preferences'.

您不需要为此使用 startActivityForResult。最简单的解决方案是将当前分数存储在一个 SharedPrefrences 文件中,两个活动都可以访问该文件。

class ActivityOne extends Activity {
    private void saveUserScore(int score) {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        prefs.edit().putInt("score", score).commit();
    }
}

class ActivityTwo extends Activity {
    private int getUserScore() {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        return prefs.getInt("score", 0);
    }
}