我正在编写一个由业务逻辑和UI部分组成的应用程序。 BL和UI都存储和访问/修改了大量数据。在大多数情况下,存储数据的更改应立即由UI反映。
如何决定是否应该使用直接数据库访问?内容提供商?
我已经对这个主题做了一些阅读(1,2),我理解这两个选项之间的区别。
请分享您对问题其他方面的看法,例如性能,代码开发难度和可维护性等。
答案 0 :(得分:18)
在我写过的应用程序中,我发现一旦你超越了学习曲线,实现ContentProvider非常容易。
<强>赞成强>:
<强>缺点强>:
当我试图弄清楚如何实现ContentProvider时,我倾注了Google's I/O应用程序中的示例代码。在你做出决定之前,我至少会花一天时间进行原型设计,这样你就可以获得第一手的权衡经验。
答案 1 :(得分:17)
我建议花费额外的时间和精力来编写ContentProvider。 ContentProviders不仅仅是共享数据访问权限。优点
ContentObservers
notifyChange
总而言之,ContentProvider是一个非常漂亮的Android概念,非常值得实现。一旦确定了定义,就不难添加对更多数据的支持。然后,就像在Helper类或业务逻辑类中编写数据库代码一样简单。
**编辑** 这是一个从模型类生成内容提供者代码的实用程序:https://code.google.com/p/mdsd-android-content-provider/
答案 2 :(得分:9)
IMO:单个APK ==通过持久层直接访问。多个APK(您自己或想要向其他人的应用提供对数据的访问权限)==内容提供商的简单必要性。