В приложении Android у меня должен быть один контент-провайдер на таблицу или только один для целого приложения?

Я имею годы опыта с разработкой Microsoft.NET (прежде всего, C#) и работал для подхождения к скорости на Android и Java. До сих пор я создал небольшое приложение с парой экранов и рабочего контент-провайдера.

Все примеры, я видел разработку контент-провайдеров обычно, работают с единственной таблицей, таким образом, я получил впечатление, что это было конвенцией.

Я создал пару большего количества контент-провайдеров для других таблиц и столкнулся с "Неизвестным URI" IllegalArgumentException, когда я пытался протестировать их. Исключение выдается одним из моих контент-провайдеров, но не тем, который я намеревался назвать.

Кажется, что мое приложение использует первого контент-провайдера в файле AndroidManifest.xml, который теперь имеет меня задающийся вопросом, должен ли у меня только быть единственный контент-провайдер для целого приложения.

Есть ли какие-либо лучшие практики и/или примеры для работы с несколькими таблицами в приложении Android? У меня должен быть один контент-провайдер на таблицу или только один для целого приложения? Если первый, как я разрешаю URIs надлежащему поставщику? Если последний, как я мешаю своему коду контент-провайдера загрязняться операторами переключения?

5
задан Andy Dyer 29 May 2010 в 19:47
поделиться

1 ответ

99% приложений Android не нуждаются в поставщиках контента.

Поставщики контента имеют одно основное назначение: межпроцессное взаимодействие. Если вы:

  • ожидаете, что другие разработчики получат доступ к вашим поставщикам контента, или
  • интегрируете с Android в тех местах, где требуется поставщик контента (например, предложения поиска для окна быстрого поиска)

, тогда, и только тогда , вы реализуете поставщика контента.

В противном случае все, что вы делаете, - это добавляете накладные расходы вашему приложению и затрудняете сопровождение кода.

Итак, если ваше приложение является одним из 99%, которым не нужны поставщики контента, просто избавьтесь от того, что у вас есть, и получите доступ к своему контенту каким-либо другим способом (например, SQLiteDatabase ).

2
ответ дан 13 December 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: