Intereting Posts
Реализация Android FingerPaint для отмены / повтора Общение с активностью из службы (LocalService) – лучшие рекомендации для Android Ошибка подключения дооснащения RetrofitError.response как null ActionBar setBackgroundDrawable () обнуление фона из Thread / Handler Как отделить метаданные и дорожку от потока крики, не делая отдельного запроса на метаданные и потоковое Как монтировать файл android img под Linux? Как обращаться с намерением, у которого нет данных при первом вызове какого-либо действия? Как установить высоту и ширину dp для просмотра изображений в android? Как играть видео в Youtube в режиме просмотра Android? Как сделать AdView «занимающим» пространство даже при запросе объявления? (Android) «R не может быть разрешено переменной» сразу после создания проекта Android? LocationManager.isProviderEnabled (LocationManager.NETWORK_PROVIDER) не является надежным, почему? Щелчок по фрагменту вызывает активность за ним ExpandableListView Слайдовая анимация в группе expand / collapse Как настроить Android sdk из командной строки на безголовом сервере?

Каково использование частных поставщиков контента?

Руководство Android Dev Guide

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

Как правило, поставщики контента используются для предоставления данных различным приложениям или совместного использования данных между ними. Мне было интересно, есть ли какие-либо возможности для частных поставщиков и не хотят делиться ими. Существуют ли какие-либо преимущества при условии, что прямой доступ к БД или файловой системе не предоставляется?

Благодарю, Rajath

Solutions Collecting From Web of "Каково использование частных поставщиков контента?"

  1. Он автоматически рассылает все ваши серверные данные и доступ к базе данных синхронизации в фоновом потоке. Тем не менее, в своем интерфейсе приложения Content Resolver / Provider обычно выполняет запросы / транзакции из потока пользовательского интерфейса по умолчанию. Вы должны выполнять все транзакции асинхронно (т. CursorLoader Используя CursorLoader ), чтобы гарантировать, что ваше приложение работает плавно на стороне пользовательского интерфейса
  2. Он локализует доступ DB-доступа к любому потоку, доступ к которому осуществляется через ContentProvider , так что вся блокировка может произойти полностью в ваших ContentProvider переопределять вызовы, а не отслеживать их на уровне БД, службе и слое пользовательского интерфейса.
  3. Как часть вышесказанного, он также обеспечивает приятный сингл-интерфейс для ваших данных. Если у вас есть десять классов активности в вашем приложении, вы просто просматриваете статические вызовы ContentResolver от каждого из них, а также должны иметь дело с открытием / закрытием SQLiteDatabase в Каждое действие при переходе от одной активности к другой в вашем приложении.
  4. ContentProvider очень сильно привязан к модели SyncAdapter. Это означает, что это почти единственный способ пойти, если вы хотите, чтобы ваша база данных синхронизировалась с серверной базой данных в сети. (Ваше приложение отражает тип ситуации типа REST)
  5. Он связан с интерфейсом ContentObserver ContentResolver – это интерфейс, в котором (среди многих других полезных вещей) представление может регистрироваться как наблюдающее определенный набор данных (через Курсор для этих данных). Затем, если вы введете изменение в ContentProvider, CP может уведомить CR, который может в свою очередь уведомлять о любых соответствующих курсорах, которые, в свою очередь, будут требовать и заставляют просмотр обновляться. Это намного проще, чем вручную отслеживать ваши взгляды, чтобы вы могли аннулировать и перерисовывать их.

Что касается блокировки БД, он не делает это полностью, но это помогает – ваш класс ContentProvider реализует четыре простые функции (интерфейс CRUD), и если вы решите переопределить его, пятый, batchAdd () – – Это локализует вашу блокировку. Простой ответ на кость – просто пометить все четыре / пять из этих деклараций функций «синхронизированными» на уровне функции, и все готово. Гораздо чище, чем пытаться выяснить, блокировка из 20 мест, которые получают доступ к вашей БД в 5 различных активах.

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