SQLiteOpenHelper и ContentProvider

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

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

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

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

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

Заранее спасибо.

Solutions Collecting From Web of "SQLiteOpenHelper и ContentProvider"

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

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

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

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

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

Обновить

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

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

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

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

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

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