Ответ 1
Я предпочитаю использовать ContentProvider, если у вас есть проблемы с закрытием или блокировкой db. Проверьте Простой контент-провайдер для операций db
Мне интересно, какой из них лучше всего подходит для доступа к моей базе данных приложений: использовать контент-провайдера или реализовать мой DAO вручную? Из моих последних исследований кажется, что контент-провайдер, даже для внутреннего использования приложения, предпочтительнее, но я точно не знаю, каковы недостатки каждого подхода. Можете ли вы дать некоторые отзывы об этом?
Я предпочитаю использовать ContentProvider, если у вас есть проблемы с закрытием или блокировкой db. Проверьте Простой контент-провайдер для операций db
От Google Документы.
Прежде чем начать строительство
Прежде чем приступить к созданию поставщика, выполните следующее:Решите, нужен ли вам поставщик контента.
Вам нужно создать контент если вы хотите предоставить одну или несколько из следующих функций:
- Вы хотите предлагать сложные данные или файлы другим приложениям.
- Вы хотите разрешить пользователям копировать сложные данные из вашего приложения в другие приложения.
- Вы хотите предоставить специальные предложения для поиска с использованием рамок поиска.
Вам не нужен поставщик для использования базы данных SQLite, если используется полностью в рамках вашего собственного приложения.
Но потом я немного смутился, читая это и некоторые другие сообщения. Имеет ли смысл использовать событие поставщика контента, если оно предназначено для использования только вашим собственным приложением?
В документации ContentProvider:
Поставщики контента являются одним из основных блоков Android-приложений, предоставляющих контент приложениям. Они инкапсулируют данные и предоставляют их приложениям через один интерфейс ContentResolver. Поставщик контента требуется только в том случае, если вам необходимо обмениваться данными между несколькими приложениями. Например, данные контактов используются несколькими приложениями и должны храниться в поставщике контента. Если вам не нужно обмениваться данными между несколькими приложениями, вы можете использовать базу данных напрямую через SQLiteDatabase.
Мне кажется, что если вы не собираетесь делиться данными с другими приложениями, вам не нужен поставщик контента.
Ссылка: http://developer.android.com/reference/android/content/ContentProvider.html