2016-07-16 1 views
0

У меня есть приложение для викторины, которое перетасовывается каждый раз, когда оно выполняется. Каков самый элегантный способ сохранения состояния игры локально, чтобы мой пользователь мог возобновить викторину, используя тот же упорядоченный список, что и раньше, а также другие примитивы, такие как оценка, уровень, точки жизни и т. Д.Сохранение огромного arraylist, index и других примитивов

Я уже есть пакет, который сохраняет это состояние, когда игра приостановлена. Как сохранить состояние, когда моя деятельность будет уничтожена.

Я знаю общие настройки, но должно быть что-то более элегантное?

+0

https://developer.android.com/training/basics/data-storage/databases.html – johnrao07

ответ

0

Я думаю, что нам нужно в первую очередь понять, что существует несколько возможностей для сохранения данных в вашем приложении (с возможностью повторного ввода приложения и восстановление данных):

1) Сохранить на диске (это быстро, но вы может стереть эти данные, например, при переустановке приложения) 2) Сохранить на удаленном диске (он медленный, но это позволит вам продолжить работу по удалению и переустановке приложения).

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

В первой же возможности есть несколько вариантов для реализации его: - через общие предпочтения - через сохранение в файл (внутреннее хранилище) - через сохранение в файле (внешнее хранилище) - путем хранения данных в базе данных

Я думаю, что последний вариант не для вас, так как вы хотите просто сохранить состояние игры. И вариант «внешнего хранилища» также не для вас, потому что игровое состояние - это личные данные вашего приложения.

Таким образом, вам необходимо выбрать между общими предпочтениями и внутренним хранением. В этой дилемме вы можете думать о том, что вам больше нравится. Для меня общие настройки обеспечивают удобный и асинхронный способ сохранения данных, что более предпочтительно в игре. Но вам нужно подумать о том, сколько данных вы хотите сохранить.

Если он невелик, выберите «Общие настройки». И если вы делаете свой способ сохранить в SharedPreferences (напишите меньше кода и сделайте его более читаемым), вы можете импортировать библиотеку Gson или Jackson. Затем выберите специальный класс GameState для своей игры и просто преобразуйте его в строку json и сохраните. То же самое для восстановления. Выберите строку из prefs и проанализируйте ее в GameState. Это все.

Надеюсь, это поможет. :)

Смежные вопросы