我很难优化 Android 上 SQLite 数据库处理的向后兼容性、复杂性和最佳实践。我发现了两种未弃用的方法来管理 SQLite 数据库和游标:
- 直接通过
android.database.sqlite
ContentProvider
,CursorLoader
和LoaderManager
我正在尝试设计数据库实现的未来证明。这意味着我想实施 Google 推广的最佳实践。我找到了一个关于实现ContentProvider
和LoaderManager
.
如果我遵循 Lars Vogels 的建议,我的代码就会被重复和不必要的复杂性所破坏。这对我数据库中的某些表确实有意义。但是对于具有三个字段的映射表(例如)实现这一点是没有意义的。此外,我遇到ActionbarSherlock
了回调接口的问题LoaderManager
(有一个解决方案,但它会使我的数据处理类加倍)。
通过直接处理数据库和游标android.database.sqlite
会引发资源管理问题(关闭游标!)并使我负责任务处理。
我的问题:
您如何在 Android 上处理 SQLite 数据库?
你什么时候加倍努力实施ContentProvider
和LoaderManager
?
你如何保持向后兼容?
我目前的方法:
我创建了一个将数据库 I/O(通过android.database.sqlite
)与活动分开的类。所有方法都打开和关闭它们在执行期间(在我的活动之外)使用的游标,并根据需要返回对象或数据(而不是游标)。I/O 操作在AsyncTasks
. 这种方法似乎非常过时。