Android Content Provider для локальной базы данных SQLite: почему?

Я довольно новичок в разработке Android, но у меня возникают проблемы, обертывая голову вокруг поставщиков контента и, в частности, какие преимущества (если они есть) для создания одного для одного источника данных SQL-данных с одним и тем же БД. Я вижу, что если я хочу использовать адаптер синхронизации, мне нужен контент-провайдер, но, честно говоря, Sync API настолько неподдельен, что я не думаю, что есть преимущество перед откатом моего собственного процесса удаленной синхронизации с помощью REST.

Я также вижу, что, реализуя Content Provider над моей SQLite DB, я получаю гарантированный Android-управляемый синглтон, но я использую AndroidAnnotations, который может делать управление singleton для меня, и это не похоже на то, что я читал, что это Даже обязательно рекомендуется иметь одноэлементный помощник БД, если я правильно управляю своими открытыми соединениями.

Я что-то упускаю? API-интерфейс Content Provider выглядит неожиданно низкоуровневым и подверженным ошибкам для одного приложения DB. В частности, управление отображением URI «вручную» и введение этого странного слоя абстракции, похоже, не приносит большого значения.

Итак, есть ли значение в Content Providers для локальных БД SQLite? И если да, то есть ли какая-то инфраструктура, которая будет генерировать мои URI-сопоставления для меня или она строго сводит ваши собственные?

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

Во-вторых, использование Content Provider позволяет вам очень легко воспользоваться инфраструктурой Loaders (также доступной в библиотеке поддержки) и CursorLoader, которая позволяет вашему пользовательскому интерфейсу автоматически обновляться в качестве изменений данных в Content Provider. Это может значительно уменьшить количество шаблонов, необходимых для всей вашей деятельности.

Если шаблон шаблона поставщика контента сам по себе является проблемой, вы можете, конечно, использовать рамки аннотаций, такие как ProviGen, чтобы автоматически генерировать подавляющее большинство поставщиков контента для вас.

В Android также есть некоторые функции, которые могут выполняться только с помощью Content Provider, включая специальные предложения по поиску и совместное использование приватных файлов приложений в других приложениях (хотя вспомогательный класс FileProvider , расширяющий ContentProvider, – это большая часть того, что вам нужно для что).

Тестирование пользовательского интерфейса можно сделать намного проще, так как вы можете использовать предоставленный MockContentProvider для макетирования определенных наборов данных без изменения кода активности (при условии, что он загружает только данные у Поставщика контента).

Intereting Posts
Перечисление usb для Android Андроидный пользовательский диалог Как реализовать контекстное меню в ListActivity на Android? Android: Как установить абсолютный размер окна Activity? Android «Отсутствует контент-провайдер или разрешение на отмену» с помощью андроида 4 Запуск приложения для Android автоматически после подключения USB-кабеля. Датчики в эмуляторе Android? Как создать теневой класс для работы с авариями, связанными с настраиваемыми атрибутами при тестировании приложения Android с помощью Robolectric? NotifyDataSetChanges для адаптера списка, изменить только часть представления Генерировать ошибку Javadoc для Android Studio Удобное использование Android XmlResourceParser? Как получить Facebook-AuthToken из учетных записей, сохраненных на Android Как выявить, что экран заблокирован? Какова цель шаблона делегирования? Не удалось синхронизировать Gradle, не удалось найти com.android.support:support-annotations:23.3.0