Android: получить доступ к базе данных SQLite через Content Provider или реализовать DAO?

Мне интересно, какой из них лучше всего подходит для доступа к моей базе данных приложений: использовать контент-провайдера или реализовать мой DAO вручную? Из моих последних исследований кажется, что контент-провайдер, даже для внутреннего использования приложения, предпочтительнее, но я точно не знаю, каковы недостатки каждого подхода. Можете ли вы дать некоторые отзывы об этом?

Ответы

Ответ 2

От Google Документы.

Прежде чем начать строительство

Прежде чем приступить к созданию поставщика, выполните следующее:

Решите, нужен ли вам поставщик контента.
Вам нужно создать контент если вы хотите предоставить одну или несколько из следующих функций:

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

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

Но потом я немного смутился, читая это и некоторые другие сообщения. Имеет ли смысл использовать событие поставщика контента, если оно предназначено для использования только вашим собственным приложением?

Ответ 3

В документации ContentProvider:

Поставщики контента являются одним из основных блоков Android-приложений, предоставляющих контент приложениям. Они инкапсулируют данные и предоставляют их приложениям через один интерфейс ContentResolver. Поставщик контента требуется только в том случае, если вам необходимо обмениваться данными между несколькими приложениями. Например, данные контактов используются несколькими приложениями и должны храниться в поставщике контента. Если вам не нужно обмениваться данными между несколькими приложениями, вы можете использовать базу данных напрямую через SQLiteDatabase.

Мне кажется, что если вы не собираетесь делиться данными с другими приложениями, вам не нужен поставщик контента.

Ссылка: http://developer.android.com/reference/android/content/ContentProvider.html