SQLiteOpenHelper и ContentProvider

Я новичок в разработке Android. Я пытаюсь создать приложение, которое читает из внутренней базы данных (SQLite) и список всех данных в списке (я использую listView).

До сих пор я получил класс под названием DatabaseHandler, который расширяет SQLiteOpenHelper и выполняет все операции с базой данных (выбирает данные, вставляет данные, удаляет данные,...).

Но теперь, когда я хочу перечислить значения, я читаю на некоторых веб-сайтах, которые я должен использовать Loader вместо Cursor, и поэтому ContentProvider. До сих пор я понимаю, что ContentProvider обеспечивает контролируемый доступ к базе данных.

Мой вопрос: делает ли ContentProvider то же самое, что и SQLiteOpenHelper?

Кроме того, я использую уровень API 8, а ContentProvider доступен только на уровне API 11. Каков наилучший способ решить эту проблему?

Спасибо заранее.

Ответы

Ответ 1

Мой вопрос: делает ContentProvider так же, как SQLiteOpenHelper?

ContentProvider реализуется разработчиком приложения, если он или она разрешат другим разработчикам получить доступ к базе данных приложений в своем приложении - просто для обмена. Он похож на сервер какой-либо базы данных, а клиент - ContentResolver, который знает авторитет ContentProvider. Например, если вам нужно получить некоторые контакты с вашего устройства, вы должны использовать ContentProvider базы данных контактов и, более конкретно, классы контрактов.

Если вы знаете полномочия соответствующего ContentProvider, вы можете обмениваться информацией с ним с помощью объекта ContentResolver.

В других случаях вам необходимо взаимодействовать с базой данных через абстрактную модель SQL, которая представлена ​​android.database и android.database.sqlite.

А также - ContentProvider, доступный с основного уровня API как один из основных компонентов приложения.

Update

Из официальной документации:

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

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

     

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

Ответ 2

SQLiteOpenHelper используется для управления созданием базы данных и ее открытием. Это только вспомогательный класс для базы данных sqlite и может использоваться в любом месте с db-операцией.

ContentProvider является одной из четырех основных компонентов андроида, остальные 3 - Activity, Service и Broadcast. ContentProvider используется для управления доступом к любому структурированному набору данных, включая базу данных sqlite. Источником данных ContentProvider может быть база данных, но не должна быть.

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