Должны ли все данные предоставляться через ContentProviders? - PullRequest
1 голос
/ 17 октября 2011

Итак, я в основном из сети и пытаюсь изучить архитектуру приложений для Android. Попытка понять правильное понимание поставщиков контента.

То, что я понимаю, я понимаю, что контент-провайдеры в значительной степени являются вашим посредником между деятельностью / услугами и вашими данными (своего рода DAO). Я также считаю, что контент-провайдер должен также предоставлять другим приложениям доступ к вашим данным (почти как веб-сервис?)

Что я на самом деле не понимаю, так это то, что если вам не нужны эти данные для других приложений? Нужно ли беспокоиться о контент-провайдерах и обо всем, что определяет uri и т. Д.? Если нет, есть ли название для этого ... шаблона? (или нехватка) Или мне лучше просто использовать ContentProviders и просто принять дополнительное преимущество предоставления этих данных другим приложениям?

Я знаю, что со временем мне захочется синхронизировать данные между приложением и внешней базой данных. Я видел презентацию Google IO, поддерживающую шаблон использования контент-провайдера для RESTful общения. Но пока я просто пытаюсь освоиться с базовыми статическими данными. Затем, надеюсь, обменяйте их на данные из службы REST по линии, как только я их получу.

Надеюсь, я здесь не совсем. Спасибо.

Ответы [ 2 ]

1 голос
/ 17 октября 2011

Хотя в нем говорится, что контент-провайдеры хороши для обмена контентом, они также дают вам пару бесплатных вещей!

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

Я быстро поставил контент-провайдера поверх своей базы данных и хорошо… никогда не оглядывался назад в этом отношении, кажется, намного проще, когда вы настроите своего контент-провайдера, код в остальной части приложения станет намного приятнее, и вы не нужно беспокоиться о параллелизме

1 голос
/ 17 октября 2011

Как написано в спецификации, и как вы упомянули:

Поставщики контента хранят и извлекают данные и делают их доступными для всех приложений. Это единственный способ обмена данными между приложениями; нет общей области хранения, к которой могут получить доступ все пакеты Android.

Таким образом, если данные, которые вы храните, не должны быть доступны для других приложений, вам не нужно беспокоиться о ContentProviders. Как вы можете видеть на Android Data Storage , существует несколько способов хранения ваших данных.

Мое мнение таково, что в вашем случае для использования Служб REST и данных, которые нельзя передавать другим приложениям, вы должны использовать SQLiteDatabase. Вы можете найти хороший пример Пример базы данных SQLite здесь .

...