从应用程序中获取数据并在应用程序重新启动时存储在另一个活动中
问题描述:
我有一个游戏活动,用户通过单击按钮可以获得点数。我想要做的就是将这些要点传递给主要活动,即用户看到的第一项活动。例如,用户进入游戏活动,获得一些积分并完全退出应用程序。当他们重新启动应用程序时,他们可以看到他们对主要活动的总分数。从应用程序中获取数据并在应用程序重新启动时存储在另一个活动中
我正在使用startActivityForResults从主游戏中的游戏活动中获取数据,但我错过了一些东西。我认为我需要在游戏活动中保存点数,以便在重新启动应用程序时获取存储点。我正朝着正确的方向前进吗?如果是的话,我怎样才能保存点?
我的另一个想法是在游戏活动中,当用户获得积分时,积分会立即发送到主要活动并保存在那里。当用户重新启动应用程序时,主要活动无需前往游戏活动以查找点数,它们将已存储在主要活动中。这种方式是相同的,更好还是更差?
答
我认为你想要使用的是SharedPreferences。他们可以从所有活动中访问,并在应用程序重新发布中保留数据。 在您的MainActivity中,您可以检查onResume()
是否有新数据/用户在GameActivity中获得(并保存)的新分数。
Here's a guide关于如何使用SharedPreferences。顺便说一句。不要被名字所迷惑,你可以用它们保存各种各样的东西,而不仅仅是'偏好'。
答
您无需为此使用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);
}
}