Подтвердить что ты не робот

Какую технику хранения данных Android использовать?

В документации по Android есть следующие варианты ниже, но не объясняет, для каких условий лучше всего подходит. Каковы плюсы и минусы каждого метода? например В каких условиях SQL будет лучше, чем общие настройки?

  • Общие настройки
  • Внутреннее хранилище
  • Внешнее хранилище
  • Базы данных SQLite
  • Сетевое подключение
4b9b3361

Ответ 1

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

enter image description here


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

enter image description here

  • Рассмотрим структурированные данные, добавленные в устройство из приложения 1, недоступны для другого приложения2, присутствующего на одном устройстве, но фотография профиля, добавленная к устройству application1, доступна для application2 работает на одном устройстве

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


Общие предпочтения

enter image description here

  • У меня есть приложение, в котором говорится о приложении Face Book, которое я использую для входа в систему моя учетная запись.

  • Теперь, когда я впервые ввел свое имя пользователя и пароль, чтобы получить доступ к моей учетной записи. Скажем, я вышел из приложения через час снова я использую одно приложение Face Book для повторного входа в мое приложение.

  • Мне нужно снова ввести имя пользователя и пароль для входа в мою учетную запись и я задал тему для своего приложения и других параметров, как мое приложение смотрит в мой текущий телефон

  • Это необязательно, потому что считайте, что я использую свой телефон для входа в систему приложение. Поэтому я всегда буду использовать свой телефон для входа в систему снова и снова, таким образом, снова вводя мои учетные данные, больше работает показывает его не удобное для пользователя приложение

  • Общие настройки очень удобны в таких сценариях, где я могу использовать его функция для обмена моими данными в XML файле, который физически существует в приложение Android, установленное на моем телефоне, которое не уничтожается, даже если приложение закрыто. Здесь мы можем сохранить данные пользовательских настроек текущее приложение.

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


Хранилище файлов

enter image description here

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

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

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

enter image description here

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

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

  • Каталог внутреннего хранилища приложений хранится с использованием пакета имен имя в специальном месте в файловой системе Android.

  • Другие приложения или пользователи текущего приложения не имеют доступа к файлу, установленному конкретный пользователь и конкретное приложение, если оно явно не сделано доступный пользователю для доступного для чтения/записи доступа.

enter image description here


SQLite

enter image description here

  • Sqlite используется для хранения более структурированных данных локально в мобильном где работает приложение Android. Структурированные данные включают в себя которые показаны на рисунке, как информация студентов в форме строк и столбцов.

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

  • Sqlite очень полезен для хранения сложных и больших данных, которые могут быть загружается один раз и может использоваться снова и снова до тех пор, пока приложение бежит. Когда приложение закрывается, база данных sqlite также уничтожен.


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

enter image description here

Ответ 2

  • Общие предпочтения хороши для хранения... настроек приложения и других небольших бит данных. Это просто очень простое хранилище строковых ключей для нескольких типов данных: 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. * Делает это.

Ответ 3

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

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

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

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

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

Ответ 4

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

База данных - это просто база данных. Вы можете определить столько столбцов (и таблиц), сколько вам нужно, чтобы выполнить задание.

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