Android 带有 ContentProvider 或 SQLiteOpenHelper 的 Sqlite
Android Sqlite with ContentProvider or SQLiteOpenHelper
我正在使用 android db 并遇到了 2 种工作方法:
1) 仅使用 SqliteOpenHelper
2) 使用 ContentProvider
和 SqliteOpenHelper
使用一个或另一个有什么优势吗?
这个问题主要是基于意见,但总结一下:
1) Using just SqliteOpenHelper
您必须自己管理数据库访问。提供 CRUD 访问的方法并具有完全控制权。更新可以而且仍然应该使用 SqliteOpenHelper
.
处理
2) Using ContentProvider and SqliteOpenHelper
这将使您能够通过框架方法访问您的数据库。它将使您能够使用 CursorLoader
(更改时自动刷新)、SyncAdapter
(将更改同步到服务器)以及一些开箱即用的其他功能。您将不得不使用 URI
路径来识别您的元素和 post 查询,因为您没有 直接 访问数据库的权限。
此选项有更好的文档记录,因为它是官方 android api,尽管您必须先阅读一些内容才能以最佳方式使用它。
同样值得注意的是,如果其他开发人员看过您的代码,他们可能会知道如何使用您的 ContentProvider
(如果您保持一致),但他们必须阅读您的源代码(或文档)以了解如何使用您的自定义实现。
我正在使用 android db 并遇到了 2 种工作方法:
1) 仅使用 SqliteOpenHelper
2) 使用 ContentProvider
和 SqliteOpenHelper
使用一个或另一个有什么优势吗?
这个问题主要是基于意见,但总结一下:
1) Using just SqliteOpenHelper
您必须自己管理数据库访问。提供 CRUD 访问的方法并具有完全控制权。更新可以而且仍然应该使用 SqliteOpenHelper
.
2) Using ContentProvider and SqliteOpenHelper
这将使您能够通过框架方法访问您的数据库。它将使您能够使用 CursorLoader
(更改时自动刷新)、SyncAdapter
(将更改同步到服务器)以及一些开箱即用的其他功能。您将不得不使用 URI
路径来识别您的元素和 post 查询,因为您没有 直接 访问数据库的权限。
此选项有更好的文档记录,因为它是官方 android api,尽管您必须先阅读一些内容才能以最佳方式使用它。
同样值得注意的是,如果其他开发人员看过您的代码,他们可能会知道如何使用您的 ContentProvider
(如果您保持一致),但他们必须阅读您的源代码(或文档)以了解如何使用您的自定义实现。