Android:从应用程序中的多个活动访问单个数据库?
问题内容:
我有一个待办事项列表类型应用程序,可将所有注释数据存储在sqlite3数据库中。应用程序中的每个活动都需要访问数据库以实时编辑数据的不同部分。
当前,我让每个活动都打开自己的DBManager对象(我创建的用于管理数据库的帮助程序类)。但是,这导致了问题,我想要一个稍微更全局的访问解决方案,因此我不必继续打开/关闭/创建数据库。
我正在考虑几种选择,并且希望听到每种选择的利弊以及其他建议。
-
单例样式。有一个包装器类,该包装器类返回对唯一数据库管理器的引用,因此需要它的任何活动都可以使用它。
-
静态管理器。使manager类完全是静态成员,并使其在加载时打开数据库。任何需要它的人(所有人)都可以轻松访问。
-
在1和2之间合并。我可以创建一个数据库管理器类,该类初始化数据库的成员单例实例,并且所有数据操作方法都是静态的。然后,我什至不需要引用单例来访问数据库。我最喜欢此解决方案,请指出缺点。
有什么建议吗?
问题答案:
我认为内容提供者很复杂,如果您不与非您自己的活动共享,则不需要它。因此,我建议您首先使用单例类。然后,如果您有更多时间或需要它,请去内容提供商。
我已经成功地使用了一个单例达6个月,没有太多困难。(虽然我确实很小心地使其成为单例,但只有一个实例一次加载了数据)
辛格尔顿
- 优点:易于实施
- 优点:因为我使用了公共实例,所以可以轻松实现缓存,从而使应用程序不必经常访问数据库
- 缺点:无法与外部活动共享您的数据
内容提供商
- 优势:您可以与外部活动共享数据
- 优势:您可以与Search API集成
- 缺点:复杂,需要用不同的方式表示数据
- 缺点:另一个花时间学习的Android API