Android SharedPreferences ограничения? - PullRequest
12 голосов
/ 08 июля 2010

Я разработал игру на Android.В настоящее время я сохраняю большую часть игровой статистики в базе данных.Однако приложение не использует более одной строки в БД.Теперь я заинтересован в представлении некоторых новых статистических данных, но это заставит мою БД переустанавливаться и, таким образом, прояснить прогресс каждого.Чтобы избежать этого в будущем, я рассматриваю возможность хранения статистики игры с SharedPreferences.У меня вопрос, сколько разных вещей можно сохранить таким образом, прежде чем это станет проблемой.Всего я буду хранить около 40 значений, все целые числа.

Ответы [ 2 ]

21 голосов
/ 08 июля 2010

SharedPreferences записываются в XML-файлы, поэтому максимальный размер файла на Android - это размер XML-файла SharedPreferences.Я могу с уверенностью сказать, что 40 целочисленных значений не будут проблемой.

Максимальный размер значения в файле SharedPreferences ограничен максимальным размером значения, которое вы пытаетесь сохранить.(Это означает, что вы не можете поместить значение String, которое длиннее, чем String, может быть в Java.)

Единственное, что я хотел бы предложить, это убедиться, что пакетные изменения максимально возможны (то есть, не .commit() каждое изменение), а также не создавайте новый редактор для каждого изменения.(Это просто хорошие практики.)

SharedPreferences settings = getSharedPreferences(PREFS_FILE_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("firstValue", mFirst);
editor.putInt("secondValue", mSecond);
editor.putInt("thirdValue", mThird);

// Commit the edits! (As infrequently as possible)
editor.commit();
7 голосов
/ 08 июля 2010

Я не знаю ни о каких ограничениях, но о вашей проблеме с каждым прогрессом стирается.Вы можете переопределить метод onUpgrade в своем классе SQLite, а затем перенести все данные в более новую базу данных.

...