НАПИСАННЯ ТА ІНТЕГРАЦІЯ ПОСТАЧАЛЬНИКА ВМІСТУ

&nbsp

Тепер, коли ми розглянули загальну структуру простого додатка, що становить список відеофайлів, і забезпечили для клієнтів спосіб доступу до нашого постачальника вмісту, вивчимо, як додаток реалізує і використовує SimpleFinchVideoContentProvider

Типові завдання, які вирішуються постачальником вмісту

У наступних розділах наводиться загальне керівництво щодо вирішення завдань, повязаних з написанням постачальника вмісту Тут буде зроблено введення в патерн MVC («Модель-вид-контролер»), застосовуваний в Android, і завершено пояснення коду Simpl eFinchVideoContentProvider

Доповнення постачальника вмісту

Додатки розширюють клас ContentProvider для управління унікальними ідентифікаторами ресурсів, що відносяться до даних конкретних типів – наприклад, MMS-повідомленнями, зображеннями, відео і т д Припустимо, при роботі з класом постачальника вмісту, який обробляє відеоінформацію, метод ContentProvider insert вставляє дані, що описують відео, в стовпці таблиці бази даних SQLite, відповідні для такої інформації Зокрема, це можуть бути стовпці з заголовком, описом відео і т п

Почнемо написання постачальника вмісту С реалізації наступних двох методів:

onCreate – надає точку привязки, що дозволяє вашому постачальнику вмісту инициализироваться Будь-який код, який ви хочете виконати одноразово, наприклад код, який встановлює зєднання з базою даних, повинен знаходитися в цьому методі

String getType (Uri uri) – повертає МІМЕ-тип даних, що надаються постачальником вмісту з даного унікальним ідентифікатором ресурсу Ідентифікатор (URI) приходить від клієнтського додатка, зацікавленого в доступі до даних

На наступному етапі реалізації перевизначаються основні методи постачальника вмісту, що забезпечують доступ до даних

insertCUri uri ContentValues ​​values) – викликається, коли клієнтського коду потрібно вставити інформацію в базу даних, обслуживаемую вашим постачальником вмісту Як правило, реалізація цього методу прямим або непрямим чином викликає операцію вставки, застосовувану до бази даних

Cursor query (Uri uri, Stringt] projection String selection, String [] selectionArgs, String sortOrder) – викликається кожного разу, коли клієнту потрібна вважати інформацію з бази даних постачальника вмісту Як правило, тут отримання даних відбувається за допомогою пропозиції SELECT на мові SQL, а у відповідь на нього повертається курсор, що містить запитані дані Розробники викликають цей метод опосередковано, за допомогою методу managedQuery Activity, або застосовують метод startManagi ngQuery до значень, що повертається від описуваного методу Якщо активності не вдається впоратися з поверненим курсором або не вдається закрити курсор, то в додатку виникне серйозний витік памяті, що загрожує низькою продуктивністю, а можливо – і аварійним завершенням програми

update (Uri uri, ContentValues ​​values, String selection, String [] selectionArgs) – викликається щоразу, коли клієнту потрібно оновити одну або більше рядків у базі даних постачальника вмісту Він перетворюється в пропозицію UPDATE мовою SQL

delete (Uri uri, String selection, String [] selectionArgs) – викликається кожного разу, коли клієнту потрібно видалити одну або більше рядків у базі даних постачальника вмісту Він перетворюється в пропозицію DELETE на мові SQL

Кожен з цих чотирьох методів вчиняє дії стосовно до даних, на які посилається конкретний URI Типова реалізація кожного з цих методів починається з зіставлення аргументу вхідного URI з певним типом даних Наприклад, реалізація постачальника вмісту повинна визначити, посилається Чи URI на конкретний відеоролик або на групу відеороликів Після того як постачальник зіставляє URI з даними, виконуються відповідні операції SQL Потім кожен метод повертає значення Це значення або містить дані, на які вказує посилання, або описує дані, порушені операцією, або посилається на кількість елементів, які були порушені в результаті операції Наприклад, на запит конкретного відеоролика буде повернений курсор, який містить лише один відеоелемент, якщо заданий унікальний ідентифікатор ресурсу посилався на єдиний елемент, який присутній в локальній таблиці

Зіставлення URI з табличними даними – найважливіша частина роботи, яку виконує постачальник вмісту Звичайно, можна подумати, що не так вже складно буде провести синтаксичний розбір URI постачальника вмісту самостійно, але в Android надається відмінна утиліта, здатна зробити цю роботу за вас Вона не тільки зручна, але й, що набагато важливіше, допомагає розробникам використовувати той формат URI постачальника вмісту, який ми розглянули вище, в якості стандарту Клас URIMatcher забезпечує відображення URI, що містять рядки джерела, шляхи та ідентифікатора, на визначені додатком константи, що використовуються з пропозиціями case, які займаються обробкою конкретних підтипів URI На цьому етапі постачальник може визначити, якими операціями SQL він користуватиметься для управління рядками таблиці Типовий постачальник вмісту створює статичний примірник URIMatcher і заповнює його за допомогою статичного ініціалізатора Цей ініціалізатор викликає URI MatcheraddURI для організації зіставлення першого рівня (first-level mapping), яке пізніше використовується в методах її постачальника Про те, як це робиться в нашому простому постачальнику відеовмісту, розказано в підрозділі «Клас SimpleFinchVideoContentProvider і змінні примірників» далі

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*