Главная » Разработка для Android » Метод query в Android приложении

0

После сопоставления входящего URI с контентом метод query нашего поставщика содержимого выполняет соответствующую выборку из базы данных, доступной для чтения. Эта задача делегируется SQLi teDatabase. query, после чего результаты возвращаются в виде объекта Cursor (курсора базы данных). Курсор содержит все строки базы данных, подходящие под описание аргументом (URI). После того как мы сделаем запрос, действующий в Android механизм поставки содержимого автоматически будет поддерживать использование экземпляров курсора с многочисленными экземплярами процессов. Таким образом, метод query нашего поставщика содержимого может просто возвращать курсор как обычное возвращаемое значение, предоставляя его клиентам, которые могут работать с другим процессом.

Кроме того, метод query поддерживает параметры uri, projection, selection, selectionArgs и sortOrder, применяемые так же, как и аргументы метода SQLi teDatabase. query. Как и в случае с любым предложением SELECT на языке SQL, параметры метода query позволяют клиентам нашего поставщика содержимого выбирать только конкретные видеоролики, соответствующие параметрам запроса. Клиент, вызывающий простой поставщик видеоинформации, может не только передать уникальный идентификатор ресурса, но и сообщить дополнительное условие where с аргументами where. Например, такие аргументы позволяют разработчику запрашивать все видеоролики от определенного автора.

Когда запрос к базе данных выполнен, наш поставщик вызывает метод Cursor. setNoti fieationllri, чтобы задать уникальный идентификатор ресурса. По этому идентификатору инфраструктура поставщика содержимого будет определять, какие события обновления поставщика будут поступать в новоиспеченный курсор. Данный уникальный идентификатор ресурса становится точкой взаимодействия между клиентами, наблюдающими за данными, на которые ссылается этот идентификатор, с одной стороны, и поставщиком содержимого, уведомляющего по этому идентификатору, – с другой.

Ниже приводится код метода query нашего простого поставщика видеоинформации. Этот код выполняет сопоставление URI, запрашивает базу данных, а затем возвращает курсор:

Пояснения к коду следующие.

Здесь происходит сопоставление URI с константами, применяется специальный встроенный механизм (URI matcher).

Установка FinchVideo.. Simpl eVideos.. CONTENTJJRI в качестве URI приводит к тому, что курсор получает события уведомления, связанные с преобразованием любых данных, на которые указывает этот URI. В данном случае курсор будет получать все события, относящиеся ко всем видео, поскольку именно на все видеофайлы ссылается идентификатор FinchVideo.SimpleVideos.CONTENTJJRI.

Непосредственное возвращение курсора. Как было указано выше, действующая в Android система поставщиков содержимого поддерживает совместное использование несколькими процессами любых данных, содержащихся в курсоре. Межпроцессное совместное использование данных обеспечивается «просто так», как неотъемлемое свойство поставщиков содержимого. Можно просто вернуть курсор, и он станет доступен активностям, действующим в различных процессах.

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

  • Комментарии