这几乎取自 Facebook sdks 示例之一(它允许您保存 FB 会话,因此用户不必每次都登录)...不过我会为您修改一下
public class SessionStore {
private static final String PLAYER_NAME = "player_name";
private static final String LEVELS_COMPLETED = "levels_completed";
private static final String HIGH_SCORE = "high_score";
private static final String KEY = "player_session";
int highScore;
int levelsCompleted;
String pName;
public static boolean saveSession(Context context, String player_name, int levels_completed, int high_score) {
Editor editor =
context.getSharedPreferences(KEY + player_name, Context.MODE_PRIVATE).edit();
editor.putString(PLAYER_NAME,player_name);
editor.putInt(LEVELS_COMPLETED, levels_completed);
editor.putInt(HIGH_SCORE,high_score);
return editor.commit();
}
public static void restoreSession(Context context, String player_name) {
SharedPreferences savedSession =
context.getSharedPreferences(KEY + player_name, Context.MODE_PRIVATE);
highScore = savedSession.getInt(HIGH_SCORE,0);
levelsCompleted = savedSession.getInt(LEVELS_COMPLETED,0);
pName = savedSession.getString(PLAYER_NAME,"NO_NAME!");
}
public String getName()
{
return pName;
}
}
我想你明白了基本的想法......
一些要点:我使用“KEY + player_name”以防不同玩家在同一部手机上玩(如果它是静态的,你会用另一个玩家的数据覆盖一个玩家的数据)。
此外,当您执行pName = savedSession.getString(PLAYER_NAME,"NO_NAME!"); 时,如果共享首选项中不存在任何内容,则默认值为“NO_NAME!”同样对于 getInts(在这种情况下,我将它们默认为 0)
在程序中,您将使用SessionStore.saveSession("Alex",50000,50000); 来保存会话等。希望这能提供有关如何使用它的一个很好的要点...另外请记住,我是一个 android 新手 - 这对我很有用,但是我不是专家:D