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