Android, sharedpreferences или внутреннее хранилище?

Я хочу хранить некоторые базовые данные, такие как players_name, levels_completed, fastest_speed, fastest_time и каждый раз поднимать его каждый раз, когда игрок начинает глупую маленькую игру, которую я делаю … что является предпочтительным методом для этого?

Sharedprefs или внутреннее хранилище?

Я нахожусь в http://developer.android.com/guide/topics/data/data-storage.html и только что запутался в отношении того, что использовать, поскольку оба выглядят хорошо и достаточно легко.

Консультировать?

Благодаря!

Это в значительной степени взято из одного из примеров sdks в Facebook (это позволяет вам сохранять сессию 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); Чтобы сохранить сеанс и т. Д. Надеюсь, это даст хороший смысл в том, как его использовать … Также имейте в виду, что я андроид newb – это отлично работает для меня, но я не эксперт: D

Если это статические данные игры, вы можете использовать общие настройки. Если это динамические данные, такие как высокие оценки игроков и т. Д., Я бы использовал базу данных sqlite. Я действительно думаю, что база данных – это более простой вариант, так как создание буферов чтения / записи может быть немного сложным для внутреннего хранилища.

 public void StoreTimeAppend(String MY_DATA, File file) { try { FileOutputStream fos = openFileOutput(String.valueOf(file), MODE_APPEND); Writer out = new OutputStreamWriter(fos, "UTF8"); out.write(MY_DATA + '\n'); out.close(); fos.close(); } catch (IOException e) { Tip.setText("ISSUE"); } } 
Intereting Posts
Должен ли мы действительно называть getLoaderManager (). InitLoader в onActivityCreated, что приводит к тому, что onLoadFinished вызывается дважды Андроид-студия auto complete: как отображать конструкторы с параметрами Кинжал: поле ввода при условии pojo Monkeyrunner vs instrumentation – что лучше для функционального тестирования? Оператор || Undefined для типа аргументов boolean, String Программно создайте фон из текстового поля из выделенного в android Как получить ширину textView в android Android – проверьте, является ли запрос GET или POST AppBar скрывает просмотр при прокрутке до сваливания Как я могу хранить информацию о kradit / дебетовой карте с помощью Android-устройства Braintree Android? Установка источника данных в исходный ID в MediaPlayer Изменение стиля кодирования из-за производительности Android GC, насколько далеко? Как инициировать / отправлять SMS с веб-страницы HTML5 с помощью собственных функций устройств? Macbook adb не может открыть интерфейс Установка приложения, но не отображаемая в Google Glass после обновления KitKat