Android SharedPreferences ограничения?

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

2 ответов


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

максимальный размер значения в файле SharedPreferences ограничен максимальным размером значения, которое вы пытаетесь сохранить. (Это означает, что вы не можете поместить строковое значение, которое больше, чем строк в 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();

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