【发布时间】:2012-11-12 15:12:37
【问题描述】:
我想知道访问我的应用程序数据库的最佳方法是:使用内容提供程序,还是手动实现我的 DAO? 从我最近的调查来看,内容提供者似乎更可取,即使是应用程序内部使用,但我不知道每种方法的缺点是什么。 您能对此提供一些反馈吗?
【问题讨论】:
标签: android database sqlite android-contentprovider dao
我想知道访问我的应用程序数据库的最佳方法是:使用内容提供程序,还是手动实现我的 DAO? 从我最近的调查来看,内容提供者似乎更可取,即使是应用程序内部使用,但我不知道每种方法的缺点是什么。 您能对此提供一些反馈吗?
【问题讨论】:
标签: android database sqlite android-contentprovider dao
如果您担心数据库的关闭或锁定,我更喜欢使用ContentProvider 。 检查Simple Content Provider for db operations
【讨论】:
来自谷歌Docs。
开始构建之前
在开始构建提供程序之前,请执行以下操作 下列的:确定您是否需要内容提供商。
您需要构建内容 如果您想提供以下一项或多项功能,则提供者:
- 您想向其他应用程序提供复杂的数据或文件。
- 您希望允许用户将复杂数据从您的应用程序复制到其他应用程序。
- 您想使用搜索框架提供自定义搜索建议。
如果使用 SQLite 数据库,您不需要 完全在您自己的应用程序中。
但是当我阅读这篇文章和其他一些帖子时,我有点困惑。如果内容提供程序事件仅供您自己的应用使用,那么使用它是否有意义?
【讨论】:
来自 ContentProvider 文档:
内容提供程序是 Android 应用程序的主要构建块之一,为应用程序提供内容。它们封装数据并通过单个 ContentResolver 接口将其提供给应用程序。仅当您需要在多个应用程序之间共享数据时才需要内容提供程序。例如,联系人数据由多个应用程序使用,并且必须存储在内容提供程序中。如果您不需要在多个应用程序之间共享数据,您可以通过 SQLiteDatabase 直接使用数据库。
在我看来,如果您不打算与其他应用程序共享数据,则不需要内容提供者。
链接:http://developer.android.com/reference/android/content/ContentProvider.html
【讨论】:
ContentProvider(事件内部)是CursorLoader的最佳数据源)