Intereting Posts
Переходите к CalledFromWrongThreadException даже при использовании AndroidSchedulers.mainThread () FirebaseInitProvider: инициализация FirebaseApp неудачна Как предотвратить мигание панели инструментов и навигационной панели при переходе активности совместного просмотра? Вызвано: java.lang.OutOfMemoryError: размер растрового изображения превышает бюджет VM КоординаторLayout layout_anchor не работает Как получить long & lat значение четырех углов в mapview в android? Как создать образцы проектов Android с помощью Ant? Build.xml не существует Сбой приложений для Android для некоторых пользователей при применении преобразования с Picasso Может ли LLVM IR (промежуточное представление) использоваться для создания кросс-платформенных (iphone и Android) исполняемых файлов ARM? AnimatedVectorDrawable в библиотеке поддержки и анимации "pathData" IOS и Android Shared HTTP Deep Linking? Android java.lang.NoClassDefFoundError: R $ string Сохраняет ли ViewModel операцию сохранения и восстановления? Как очистить кэш проекта в идее Intellij, например, Eclipse?

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 для макетирования определенных наборов данных без изменения кода активности (при условии, что он загружает только данные у Поставщика контента).