微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我什么时候应该打开和关闭数据库连接?

概述:在onStart和异步任务中打开数据库连接已变得非常复杂.拥有全局可用的数据库连接是不好的做法吗?如果它是坏的什么是更好的方法

详细信息:我有一个应用程序在几个活动中连接到sqlite3数据库.起初,我需要访问数据库的地方不多,所以每次需要访问时我都只是打开和关闭.然后有更多地方需要访问它,正如另一个Stack Overflow问题所示,我开始在需要连接的活动的onStart方法中打开数据库连接,并在onStop方法关闭它.

这工作正常,直到我开始需要连接一些超出活动的异步任务.由于已调用活动的onStop方法并且已关闭连接,因此当异步任务尝试访问数据库时,它失败了.作为一种解决方案,我为每个异步任务创建了单独的连接,这些连接在onPreExecute方法中打开并在onPostExecute方法关闭.

这导致了许多连接的打开和关闭,我想知道在应用程序上下文中创建全局可用的数据库连接是否是一个好主意.如果我忘记关闭连接或应用程序遇到强制关闭,它肯定会清理大量代码删除正在发生的任何未关闭数据库异常.其他人试过这个/看到这种方法的任何问题?

最佳答案
几周前我遇到了类似的问题.我使用了几个在sqlite数据库中具有持久性的类.

因为我想将活动与持久性分离,所以我为那些需要持久性的人创建了静态内部类(称为Managers).每次我实例化一个管理器时,都会创建一个数据库连接,在使用管理器之后我会明确地关闭它.如果我有全局管理器来访问表,那么它们应该由于并发而同步,我不知道何时应该关闭这些数据库连接.所以我这样做了.

希望这可以帮助!

原文地址:https://www.jb51.cc/android/430590.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐