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

我想知哪个是访问我的应用程序数据库的最佳方法:使用Content Provider,还是手工实现我的DAO? 从我最近的调查来看,内容提供者似乎更喜欢应用程序内部使用,但我不确切知道每种方法的缺点。 你能提供一些反馈吗?

Solutions Collecting From Web of "Android:通过Content Provider访问SQLite数据库还是实现DAO?"

如果您担心closures或locking数据库,我更喜欢使用ContentProvider 。 检查数据库操作的简单内容提供者

来自Google 文档 。

开始build设之前

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

决定是否需要内容提供者。
如果您想提供以下一项或多项function,则需要构build内容提供者:

  • 你想提供复杂的数据或文件到其他应用程序。
  • 您希望允许用户将复杂的数据从应用程序复制到其他应用程序中。
  • 您想要使用search框架提供自定义searchbuild议。

如果使用完全在您自己的应用程序中,则不需要提供者使用SQLite数据库。

但是当阅读本文和其他文章时,我感到有些困惑。 如果仅用于您自己的应用程序,那么使用内容提供者事件是否有意义?

从ContentProvider文档:

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

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

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