2010-07-08 3 views
9

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

+0

40 целых чисел хороши для хранения в SharedPreferences –

ответ

18

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(); 
+3

«Дольше, чем строки могут быть в Java» - строки могут иметь 2^31 - 1 = 2 миллиарда символов. Ну, тогда это может зависеть от внутренней памяти телефона. –

7

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

+2

Точно. См. Примеры блокнота - вы можете использовать ALTER TABLE для добавления новых столбцов. Или вы могли бы добавить совершенно новую таблицу. Вы можете переключиться на SharedPreferences, но поскольку вы уже пошли на подход к базе данных, вы можете также придерживаться его. – EboMike

+0

Я думаю, что собираюсь попробовать модель SharedPreferences и посмотреть, что мне больше нравится. Я буду поддерживать БД, хотя в какой-то момент я планирую разрешить несколько сохраненных игр. Спасибо за отзыв о Alter Table, он поможет мне перейти на SharedPreferences и сохранить прогресс каждого. – Tim