Android:通过Content Provider访问SQLite数据库还是实现DAO?

use*_*437 16 database sqlite android dao android-contentprovider

我想知道哪种方法是访问我的应用程序数据库的最佳方法:使用内容提供程序,或手动实现我的DAO?从我最近的调查来看,似乎内容提供商,即使是应用程序内部使用,也是可取的,但我不确切知道每种方法的缺点是什么.你能给出一些反馈意见吗?

Lab*_*lan 13

如果你担心关闭或锁定db,我更喜欢使用ContentProvider.检查Simple Content Provider以进行数据库操作


MRo*_*ues 10

来自Google 文档.

在开始构建之前

在开始构建提供程序之前,请执行以下操作:

确定您是否需要内容提供商.
如果要提供以下一项或多项功能,则需要构建内容提供程序:

  • 您希望向其他应用程序提供复杂的数据或文件.
  • 您希望允许用户将应用中的复杂数据复制到其他应用中.
  • 您希望使用搜索框架提供自定义搜索建议.

并不需要一个供应商,如果使用完全是你自己的应用程序中使用SQLite数据库.

但是当我阅读这篇文章和其他一些帖子时,我有点困惑.如果它只是由您自己的应用程序使用,那么使用内容提供程序事件是否有意义?


小智 5

从ContentProvider文档:

内容提供商是Android应用程序的主要构建块之一,为应用程序提供内容.它们封装数据并通过单个ContentResolver接口将其提供给应用程序.只有在需要在多个应用程序之间共享数据时,才需要内容提供程序.例如,联系人数据由多个应用程序使用,并且必须存储在内容提供商中.如果您不需要在多个应用程序之间共享数据,则可以通过SQLiteDatabase直接使用数据库.

在我看来,如果您不打算与其他应用程序共享数据,则不需要内容提供商.

链接:http://developer.android.com/reference/android/content/ContentProvider.html

  • 这是不相关的,因为`ContentProvider`(事件内部)是`CursorLoader`的最佳数据源 (5认同)