Подтвердить что ты не робот

Как работает getContentResolver()?

Я просмотрел курс о ContentProvider в Интернете, демонстрирующий, как определить и использовать ContentProvider.

Меня смутило использование метода с именем getContentResolver(). Что возвращает этот метод?

Мой ContentProvider не задан, и код просто пишет, что getContentProvider().query().

Я не понимаю, как работает ContentProvider.

4b9b3361

Ответ 1

Он возвращает Content Resolver.


Что такое Content Resolver?

Content Resolver - это единственный глобальный экземпляр вашего приложения, который обеспечивает доступ к вашим (и другим приложениям) контент-провайдерам. Content Resolver ведет себя точно так же, как следует из его названия: он принимает запросы от клиентов и решает эти запросы, направляя их поставщику контента с особым полномочием. Для этого в Content Resolver хранится сопоставление с полномочиями поставщиков контента. Эта конструкция важна, поскольку она позволяет использовать простые и безопасные средства доступа к поставщикам контента других приложений.

Content Resolver включает методы CRUD (создавать, читать, обновлять, удалять), соответствующие абстрактным методам (insert, delete, query, update) в классе Content Provider. Content Resolver не знает реализации поставщиков контента, с которыми он взаимодействует (и не должен знать); каждому методу передается URI, который задает контент-провайдер для взаимодействия с.


Что такое поставщик контента?

В то время как Content Resolver обеспечивает абстракцию от поставщиков Content Content, поставщики контента предоставляют абстрагирование от базового источника данных (т.е. a SQLite database). Они предоставляют механизмы для определения безопасности данных (т.е. Путем обеспечения разрешений на чтение и запись) и предлагают стандартный интерфейс, который соединяет данные в одном процессе с кодом, запущенным в другом процессе.

Поставщики контента предоставляют интерфейс для публикации и потребления данных, основанный на простой модели адресации URI, используя content:// schema. Они позволяют отделить слои приложений от базовых слоев данных, что делает ваш агент-источник данных агностиком, абстрагируя исходный источник данных.

Источник - androiddesignpatterns

Ответ 2

getContentResolver() возвращает экземпляр ContentResolver для вашего пакета приложений.

Вставка его с сайта developer.android.com

Поставщики контента управляют доступом к структурированному набору данных. Они инкапсулируют данные и предоставляют механизмы для определения безопасности данных. Поставщики контента - это стандартный интерфейс, который соединяет данные в одном процессе с кодом, запущенным в другом процессе.

Когда вы хотите получить доступ к данным в поставщике контента, вы используете объект ContentResolver в своем приложении Контекст для связи с поставщиком как с клиентом. Объект ContentResolver связывается с объектом-провайдером, экземпляром класса, который реализует ContentProvider. Объект поставщика получает запросы данных от клиентов, выполняет запрошенное действие и возвращает результаты.

http://developer.android.com/guide/topics/providers/content-providers.html