Я разработал игру на Android. В настоящее время я сохраняю большую часть статистики игры в базе данных. Однако приложение не использует больше одной строки в БД. Теперь меня интересует введение некоторых новых характеристик, но это приведет к тому, что моя БД будет переустанавливаться и, таким образом, прояснит прогресс каждого. Чтобы этого избежать в будущем, я рассматриваю возможность хранения статистики игры с помощью SharedPreferences. Мой вопрос в том, как много разных вещей может быть сохранено таким образом, пока это не станет проблемой. В общей сложности я буду хранить около 40 значений, все целые числа.Ограничения Android SharedPreferences?
ответ
SharedPreferences записываются в файлы xml, поэтому максимальный размер файла на Android - это размер файла XML SharedPreferences. Я могу с уверенностью сказать, что 40 целых значений не будут проблемой.
Максимальный размер значения в файле SharedPreferences ограничен максимальным размером значения, которое вы пытаетесь сохранить. (Значит, вы не можете поместить значение 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();
«Дольше, чем строки могут быть в Java» - строки могут иметь 2^31 - 1 = 2 миллиарда символов. Ну, тогда это может зависеть от внутренней памяти телефона. –
Я не знаю о каких-либо ограничениях, но касаюсь вашей проблемы, когда всякий прогресс будет уничтожен. Вы можете переопределить метод onUpgrade в своем классе SQLite, а затем перенести все данные на новую базу данных.
Точно. См. Примеры блокнота - вы можете использовать ALTER TABLE для добавления новых столбцов. Или вы могли бы добавить совершенно новую таблицу. Вы можете переключиться на SharedPreferences, но поскольку вы уже пошли на подход к базе данных, вы можете также придерживаться его. – EboMike
Я думаю, что собираюсь попробовать модель SharedPreferences и посмотреть, что мне больше нравится. Я буду поддерживать БД, хотя в какой-то момент я планирую разрешить несколько сохраненных игр. Спасибо за отзыв о Alter Table, он поможет мне перейти на SharedPreferences и сохранить прогресс каждого. – Tim
40 целых чисел хороши для хранения в SharedPreferences –