-1

在我的应用程序(一个 SyncAdapter)中,我包含许多 ContentProviders 供其他应用程序使用,并且想知道尝试在它们之间共享单个 SQLiteOpenHelper 实例以供使用是否合适?如果是这样,怎么做?

如果这不合适,是否认为(如示例所示)在每个 ContentProvider 的 onCreate 方法中重复实例化 SQLiteOpenHelper 是正确的;似乎应该有更好的方法!

清单中是否有足够的信息供操作系统实例化 ContentProviders 而无需先创建其包含的应用程序?如果是这样,那么我不能在扩展 Application 的类中保存静态 SQLiteOpenHelper 以供 ContentProviders 检索。

帮助!

4

1 回答 1

0

答案是将我的 ContentProviders 合并到一个 ContentProvider 中,该 ContentProvider 连接起来以处理我的各种 URI/表;这是一个例子来自谷歌自己。通过这种方式,您可以实例化您的 SQLiteOpenHelper 并将其设置为一个字段以供您覆盖的方法使用,再次参见示例。顺便说一句,我从该代码中获得的另一个好的(为了最佳实践)模式是:覆盖 applyBatch 以将它所做的所有事情都包装在事务中。此后,只要您想进行任何持久性,就只使用它(通过。ContentProviderOperations);如果你这样做,你可以从你实际覆盖的更新、删除和插入方法中省略事务——因为你不会直接使用它们!后者对我很有吸引力,因为它简化了我的插入、更新和删除方法,并确保在抛出异常时可以轻松回滚整个相关更改序列。

于 2013-06-09T21:17:44.030 回答