Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有ContentProvider或SQLiteOpenHelper的Android Sqlite_Android_Android Sqlite - Fatal编程技术网

带有ContentProvider或SQLiteOpenHelper的Android Sqlite

带有ContentProvider或SQLiteOpenHelper的Android Sqlite,android,android-sqlite,Android,Android Sqlite,我在使用android db时遇到了两种工作方法: 1) 仅使用SqliteOpenHelper 2) 使用ContentProvider和SqliteOpenHelper 使用其中一种有什么好处吗 这个问题主要是基于观点,但概括起来: 1) 仅使用SqliteOpenHelper 您必须自己管理数据库访问。提供CRUD访问方法并具有完全控制权。更新可以而且仍然应该使用SqliteOpenHelper处理 2) 使用ContentProvider和SqliteOpenHelper 这将允许您通过

我在使用android db时遇到了两种工作方法:

1) 仅使用
SqliteOpenHelper

2) 使用
ContentProvider
SqliteOpenHelper


使用其中一种有什么好处吗

这个问题主要是基于观点,但概括起来:

1) 仅使用SqliteOpenHelper

您必须自己管理数据库访问。提供CRUD访问方法并具有完全控制权。更新可以而且仍然应该使用
SqliteOpenHelper
处理

2) 使用ContentProvider和SqliteOpenHelper

这将允许您通过框架方法访问数据库。它将使您能够立即使用
游标加载程序
(更改时自动刷新)、
同步适配器
(将更改同步到服务器)和其他一些功能。您必须使用
URI
路径来识别元素和post查询,因为您无法直接访问数据库。
这个选项有更好的文档记录,因为它是一个官方的android api,尽管您必须先阅读一些内容,然后才能最佳地使用它



同样值得注意的是,如果其他开发人员查看您的代码,他们可能会知道如何使用您的
内容提供者
(如果您保持一致),但他们必须阅读您的源代码(或文档)以了解如何使用您的自定义实现。

为了确保,您的意思是说仅使用SqliteOpenHelper就不可能/很难使用SyncAdapter吗?@Nazerke SyncAdapter作为框架的一部分旨在与内容提供商一起使用,我相信大多数教程也会使用它们。显然,您不必使用ContentProvider,但我自己也讨厌使用框架。