Сохранение данных для Android-игры [дубликат]

Если вы используете Spring, добавьте аргумент типа @RequestParam Map<String,String> к вашему методу контроллера, а Spring построит для вас карту!

40
задан Deco 3 April 2012 в 04:32
поделиться

4 ответа

Различные варианты хранения в Android

enter image description here [/g6]


Поставщики контента

enter image description here [/g7]

  • . Рассмотрите, что структурированные данные, добавленные в устройство из приложения 1, недоступны для другого приложения2, присутствующего на том же устройстве, но фотография профиля, добавленная к устройству с помощью application1, доступна для application2, запущенного в одно и то же устройство
  • Рассмотрите устройство Android как город, приложения в нем - это дома в городе, люди в домах (приложение) - это данные. Теперь контент-провайдер похож на брокера в городе (Android-устройство). Этот брокер предоставляет доступ для людей в городе для поиска разных домов, ссылаясь на то, что поставщик контента в устройстве Android обеспечивает доступ к данным в устройстве для разных приложений.

Shared Предпочтения

enter image description here [/g8]

  • . У меня есть приложение, в котором говорится о приложении Face Book, которое я использую для входа в мою учетную запись.
  • Теперь, когда я впервые ввел свое имя пользователя и пароль, чтобы получить доступ к моей учетной записи. Скажем, я выхожу из приложения через час снова. Я использую одно приложение Face Book для повторного входа в мое приложение.
  • Мне нужно снова ввести имя пользователя и пароль для входа в мою учетную запись, и я задал тему к моему приложению и другим настройкам о том, как мое приложение выглядит на моем текущем телефоне
  • Это необязательно, потому что считайте, что я использую свой телефон для входа в приложение. Поэтому я всегда буду использовать свой телефон для входа в систему снова и снова, поэтому снова вводить мои учетные данные снова и снова, это больше показывает, что это не удобное приложение
  • Общие настройки очень удобны в таких сценариях, где я могу использовать его чтобы поделиться своими данными в XML-файле, который физически существует в приложении Android, установленном на моем телефоне, который не уничтожается, даже если приложение закрыто. Здесь мы можем сохранить данные пользовательских настроек текущего приложения.
  • В результате в следующий раз, когда я открою свое приложение в своем телефоне, я вижу, что данные автоматически заполняются в необходимых полях, а настройки -

Файловое хранилище

enter image description here [/g9]

  • В Android мы можем использовать пространство памяти устройства для хранения данных в это для приложений. Тип данных включает такие вещи, как текстовый файл, файл изображения, видеофайл, аудиофайл и т. Д.
  • Как видно на рисунке, мы видим, что есть два места, которые мы можем сделать. Один из способов - записать необработанные файлы в первичное / вторичное хранилище. Другой способ - записать файлы кэша в основное / вторичное хранилище.
  • Существует также различие между хранением необработанных данных и данными кэша, необработанные данные, однажды сохраненные в памяти пользователем, должны быть явно удалены пользователь явно иначе будет существовать до тех пор. Данные кэша, хранящиеся в памяти, не являются постоянными данными, потому что система автоматически удаляет их, если чувствует нехватку памяти.

enter image description here [/g10]

Внутреннее хранилище:

  • Рассмотрите, что пользователь в приложении хранит данные во внутренней памяти, тогда только тот пользователь этого приложения имеет доступ к этим данным на мобильном устройстве, и эти данные автоматически удаляются, когда пользователь удаляет приложение. Говоря о том, какая внутренняя память является частной.
  • Каталог внутреннего хранилища приложений хранится с использованием имени имени пакета в специальном месте в файловой системе Android.
  • Другие приложения или пользователи текущего приложение не имеет доступа к файлу, установленному конкретным пользователем и конкретным приложением, если оно явно не доступно для пользователя для доступа, доступного для чтения / записи.

enter image description here [/g11]


SQLite

enter image description here [/g12]

  • Sqlite используется для хранения более структурированных данных локально на мобильном устройстве, где приложение для Android бежит. Структурированные данные включают в себя, как показано на рисунке, как информация учащегося в виде строк и столбцов.
  • Sqlite предлагает аналогичные функции, такие как Mysql и oracle, но с ограниченными функциональными возможностями. Некоторые из них связаны с выполнением операций запроса в таблицах. Есть функции, подобные созданию представлений, но также некоторые функции недоступны как хранимая процедура.
  • Sqlite очень помогает хранить сложные и большие данные, которые можно загрузить один раз и их можно использовать снова и снова до тех пор, пока приложение бежит. Когда приложение закрыто, база данных sqlite также уничтожается.

Помещение всех частей вместе

enter image description here [/g13]

91
ответ дан Devrath 18 August 2018 в 02:31
поделиться
  • 1
    Данные SQLite уничтожаются только тогда, когда приложение удалено или «Настройки & gt; Очистить данные» & quot; , но не при закрытии приложения. – blizzard 9 October 2015 в 10:55
  • 2
    также удалит данные из памяти, если они сохранены, как указано в @ b1izzard – sandeep_kosta 19 April 2016 в 07:49
  • 3
    Я думаю, что это может быть руководство или подобное, например «Как отвечать на вопрос о стеке». Это не ответ, это урок. Большое спасибо, брат! – Heisenberg 1 July 2016 в 18:32
  • 4
    Ámen, это похоже на библию для хранения данных на Android. – MRodrigues 9 August 2016 в 08:33
  • 5
    Это отличный ответ. Есть ли источник изображений? – MGDavies 11 September 2017 в 10:02

Общие предпочтения - пары ключ / значение, не более. Поэтому, если вы хотите отслеживать, скажем, студентов и их тестовый результат, это действительно не сработает.

База данных - это просто база данных.

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

4
ответ дан Barak 18 August 2018 в 02:31
поделиться

SharedPreferences в основном относится к настройкам приложения, доступ к которым вы можете получить через меню настроек - например, настройки приложения. Это хорошая идея, чтобы все здесь было просто: в основном логические флаги, короткие строки или целые числа. Данные SharedPreferences сохраняются при перезагрузке устройства и удаляются вместе с удалением приложения. Данные сохраняются в виде пары «ключ-значение».

Внутреннее хранилище в основном используется для большего хранения данных без сохранения. Вы используете внутреннее хранилище, если хотите обрабатывать изображение, короткий видеоклип, большой текстовый файл и т. Д. Но вы не храните обработанные данные во внутреннем хранилище - его функция больше похожа на ОЗУ процессора. Объем доступного внутреннего хранилища для вашего приложения зависит от устройства, но всегда рекомендуется хранить что-либо под 1 МБ. Данные ссылаются по пути к файлу.

Внешнее хранилище относится не только к хранилищу SDCard, но и для телефонов высшего класса, это может означать внутреннее монтируемое хранилище (например, в Galaxy Nexus или S2). Здесь вы храните большие видеофайлы, изображения с высоким разрешением и 20-мегабайтный текстовый файл, который вы хотите проанализировать в своем приложении. Это также место для хранения данных, которые вы хотите использовать на всех устройствах, если вы меняете SD-карты. На данные также ссылаются через свой путь к файлу.

SQLite Databases - это то место, где вы храните почти все, что захотите, в обычной базе данных - с преимуществом организации вещей в таблицы, строки и столбцы. Он лучше всего работает с вещами, которые вы хотите отображать в пользовательском интерфейсе в качестве списков - лучший пример - это отличное изобретение, известное как CursorAdapter. Сохраненные здесь данные также сохраняются при перезагрузке устройства и удаляются с удалением приложения. Вы также можете обмениваться данными между приложениями с помощью sqlite db, если вы подключите его к ContentProvider. Доступ к данным осуществляется с помощью курсора , где вы можете вызывать методы так же, как если бы вы выполняли операторы SQL.

Сетевое соединение не является методом хранения данных, но может быть способом сохраняющихся данных для конкретного пользователя, если устройство подключено к Интернету, используя некоторую аутентификацию. Вы должны балансировать между загрузкой данных каждый раз, когда приложение нуждается в ней, или с одноразовой синхронизацией данных, что в конечном итоге приведет к другому варианту хранения, упомянутому выше.

15
ответ дан josephus 18 August 2018 в 02:31
поделиться
  • Общие предпочтения хороши для хранения ... предпочтений приложения и других небольших битов данных. Это просто очень простое хранилище строковых ключей для нескольких типов данных: boolean, float, int, long и string. Например, если у моего приложения был логин, я мог бы рассмотреть сохранение ключа сеанса как строки в SharedPreferences.
  • Внутреннее хранилище полезно для хранения данных приложения, к которым пользователю не нужен доступ, поскольку пользователь не может легко получить доступ к внутреннему хранилищу. Возможно, это хорошо для кэширования, журналов и других вещей. Все, что только приложение предназначено для создания обновления для чтения или удаления.
  • Внешнее хранилище. Отлично подходит для того, что я только что сказал. Приложение dropbox, вероятно, использует внешнее хранилище для хранения папки с Dropbox пользователя, так что пользователь имеет легкий доступ к этим файлам вне приложения dropbox, например, используя диспетчер файлов.
  • Базы данных SQLite великолепны, когда вы будут использовать множество структурированных данных и относительно жесткую схему для управления им. Полагая термины непрофессионала, SQLite похож на MySQL или PostgreSQL, но вместо базы данных, действующей как серверный демон, который затем берет запросы из сценариев CGI, таких как php, он просто хранится в файле .db и доступен и запрашивается через простую библиотеку в приложении. Хотя SQLite не может масштабироваться почти так же сильно, как выделенные базы данных, он очень быстр и удобен для небольших приложений, таких как приложения для Android. Я бы использовал SQLite db, если бы я создавал приложение для агрегирования и загрузки рецептов, поскольку такие данные относительно структурированы, и база данных позволит масштабировать его. Базы данных хороши, поскольку записывать все данные в файл, а затем разбирать их в собственном собственном формате, это не забавно. С другой стороны, хранение данных в XML или JSON не так уж плохо.
  • Сетевое соединение относится к хранению данных в облаке. Передача файлов HTTP и FTP и содержимого через пакеты java.net. * Делает это.
34
ответ дан superuser 18 August 2018 в 02:31
поделиться
  • 1
    Как насчет поставщика контента? – magicianiam 18 March 2013 в 23:48
  • 2
    ContentProvider - это схема / интерфейс для предоставления данных другим приложениям; он напрямую не связан с фактическим хранением самих данных, хотя обычно они будут поддерживаться базой данных. – matt5784 11 June 2013 в 06:30
  • 3
    Благодарим вас за подробное объяснение этого (и спасибо matt5784 за лакомый купон ContentProvider). – Ankit Aggarwal 1 January 2014 в 08:32
  • 4
    Расширение комментария XML или JSON для хранения структурированных данных в файле: для XML см. Классы android.util.xml. Для JSON, google & quot; JSON в Java & quot ;. Либо полезно, если вы планируете одновременно считывать и записывать умеренно сложные данные в объекты Java. (Если слишком много данных для загрузки в память сразу, то вместо этого используйте базу данных SQLite. Аналогично, если части данных часто меняются, возможно, лучше записать каждую измененную часть обратно в БД.) Для некоторых программистов XML или JSON будут быть более удобными, чем схемы баз данных + SQL-запросы. – ToolmakerSteve 19 September 2014 в 22:51
  • 5
    @Teddy. Для приложения, такого как загрузка данных, таких как прейскурант для продукта и его информации, будет лучше добавить его в sqlite db? – Fahim 9 October 2015 в 06:38
Другие вопросы по тегам:

Похожие вопросы: