gpt4 book ai didi

Android、共享首选项还是内部存储?

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:09 26 4
gpt4 key购买 nike

我想存储一些基本数据,例如 players_name、levels_completed、fastest_speed、fastest_time 并在每次玩家开始我正在制作的愚蠢小游戏时调出这些数据...这是执行此操作的最佳方法吗?

Sharedprefs 还是内部存储?

我在 http://developer.android.com/guide/topics/data/data-storage.html并且对使用哪个感到困惑,因为两者看起来都不错而且很容易做到。

建议?

谢谢!

最佳答案

这几乎取自 Facebook sdks 示例之一(它允许您保存 FB session ,因此用户不必每次都登录)...不过我会为您稍微修改一下

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); 来保存 session 等。希望这能很好地说明如何使用它...还要记住我是一个 android 新手 - 这对我来说很好但我不是专家 :D

关于Android、共享首选项还是内部存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6824526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com