我有一个 todo 列表类型的应用程序,它将所有笔记数据存储在 sqlite3 数据库中。应用程序中的每个 Activity 都需要访问数据库以实时编辑数据的不同部分。
目前,我让每个 Activity 都打开自己的 DBManager 对象(我创建的用于管理数据库的助手类)。但这会导致问题,我想要一个稍微更全局的访问解决方案,这样我就不必继续打开/关闭/创建数据库。
我正在考虑多种选择,并想听听每种选择的优缺点以及其他建议。
单例风格。有一个包装类返回对唯一数据库管理器的引用,以便任何需要它的 Activity 都可以使用它。
静态管理器。让管理器类完全是静态成员,并让它在加载时打开数据库。任何需要它的人(每个人)都可以轻松访问。
1 和 2 之间的合并。我可以创建一个数据库管理器类来初始化数据库的成员单例实例,并且所有数据操作方法都是静态的。然后我什至不需要引用单例来访问数据库。我最喜欢这个解决方案,请指出缺点。
建议?
最佳答案
在我看来,Content Provider 很复杂,如果您不与不属于您自己的 Activity 共享,则不需要它。因此,我建议您首先使用单例类。然后,如果您有更多时间或需要它,请去找 Content Provider。
我已经成功地使用了 6 个月的单例,没有太大的困难。 (虽然我很小心地让它成为一个单例,只有一个实例加载一次数据)
单例
- 优点:易于实现
- 优点:因为我用了一个普通的 例如,我可以实现缓存 很容易,因此使申请 不必对数据库做 经常
- 缺点:无法与外部 Activity 共享您的数据
内容提供者
- 优点:您可以共享您的数据 与外部 Activity
- 优点:您可以与 搜索 API
- 缺点:复杂,需要 以不同的方式表示您的数据 方式
- 缺点:又一个 Android API 花时间学习
关于java - Android:从应用程序中的多个 Activity 访问单个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1905846/