0

Любой знает, почему команда разработчиков Android внедрила Content-Resolver в качестве посредника для получения данных от Content-Provider. Почему не запрашивать данные непосредственно у контент-провайдера? Это означает, что у Content-Resolver есть специальная работа, что это такое?Content-Resolver Exploration

+1

напрямую? как ? – pskink

+0

Средний человек - лучший вариант, когда мы пытаемся связаться с очень полезным и безопасным приятелем. – Androider

ответ

0

ContentResolver s предназначены для создания интерфейса для приложений для безопасного доступа и/или изменения данных в других приложениях, которые выполняются в отдельных процессах. Он создает общий контракт на регистрацию, запросы, обновления, привязку и т. Д., Которые должны быть переданы между конкретным ContentProvider и потребителем контента, который работает в другом процессе.

Создание надлежащего и долговечного интерфейса для передачи данных через процессы в Android сложное. Если вам нужно было создать свой собственный клиент IPC, это потребует много времени, и вы, вероятно, не заметите важных аспектов реализации. «Прямое» соединение с ContentProvider - это то, что дает ContentResolver, но с большой сложностью, уже рассмотренной. Это удобство, чтобы иметь уже созданные и четко определенные с обеих сторон.

Это немного напоминает почтовую систему доставки. Если вы используете почтовую службу, вы отправляете адрес на кусок почты, и почтовая служба (ContentResolver) находит подходящее место для доставки сообщения (ContentProvider), а затем возвращает все сообщения вам в ответ на ваше сообщение. Ваша почтовая служба также будет обрабатывать новые регистрации адресов, сообщит вам, является ли адрес недопустимым, если пакет слишком велик, если получатель на целевом адресе не принимает сообщения прямо сейчас, ждет, если очередь сообщений заполнена, обрабатывает ситуации, когда транспортное средство, несущее сообщение, ломается и т. д. И в случае ContentResolver s есть еще несколько вещей.

Вы можете обрабатывать все это самостоятельно, но когда вы думаете о реальной доставке сообщений, это не просто и намного проще использовать что-то, созданное кем-то другим. Аналогично для межпроцессного общения (IPC) в Android. Это не идеальная аналогия, но, надеюсь, это поможет прояснить необходимость в ContentResolver.

1

Почему бы не получить данные непосредственно у Content-Provider?

content:Uri может относиться к ContentProvider в другом приложении. Вы не можете напрямую работать с этим ContentProvider; требуется межпроцессная коммуникация (МПК). Следовательно, API был разработан вокруг этой модели IPC.

Смежные вопросы