Intereting Posts
StartActivityForResult из службы Использовать голографическую тему на Android <4.0 Поддержка Android v4 SwipeRefreshLayout проблема с пустым представлением MoveCamera с ошибками CameraUpdateFactory.newLatLngBounds Как создать миниатюру видео с пути видеофайла в Android Как удалить номер индикатора выполнения в нижней части индикатора выполнения? DialogFragment с setRetainInstanceState (true) не отображается после поворота устройства Отсутствующие API и auth> Зарегистрированные приложения в облачной консоли Google / Как получить ключ GCM API? Интерпретация многоуровневой трассировки производительности (Eclipse / Android) Студия Android не распознает исходные папки Использование курсора с адаптером ListView для большого количества данных Как использовать findViewById () в robolectric Невозможно получить ответ response.body.toString () OkHttp для возврата строки Анимация Viewflipper не работает при первом прокрутке Запустите поисковый запрос Google из активности – Android

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

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

Solutions Collecting From Web of "Ограничения 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(); 

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

Существует ограничение данных SharedPreferences. Практически в моем устройстве он генерирует исключение памяти, когда данные SharedPreferences превышают 1,42 МБ.

В вашем случае 40 целых чисел не будут создавать проблему.

По словам разработчика . «Если у вас относительно небольшая коллекция ключевых значений, которые вы хотите сохранить, вы должны использовать API SharedPreferences».