android - 如果我不关闭 Android 中的数据库会发生什么?

标签 android database android-sqlite

这个标题听起来有点疯狂,但这正是让我感到困惑的地方。我的应用程序大量使用本地数据库操作。正如 Android 文档和一些博客中所建议的那样,我扩展了 SQLiteOpenHelper 类并在那里定义了我所有的数据库操作。由于我的一些数据库操作在线程中执行,打开和关闭数据库会导致一些IllegalStateExceptions。因此,我将我的数据库助手设置为 Singleton,它解决了这些问题,还摆脱了每个数据库操作的 openclose 操作。现在一切似乎都运行良好,即使我从未关闭数据库。

  • 我的困惑是有必要关闭 DB 吗?
  • 如果是这样,这样做的正确位置是什么,是在主要 Activity 的 onDestroy 还是其他地方?
  • 如果我不关闭数据库,会有什么副作用?

最佳答案

如果您尝试再次打开同一个数据库,您可以捕获 IllegalStateException

如果您在主 Activity 的onCreate 方法中创建了DBHelper 的实例——它会在onDestroy 中写入关闭数据库。因此,您可以确定,下次在 onCreate 中,您的数据库尚未打开。

如果您在服务中引用了 DBHelper,那么它应该在服务中打开和关闭,而不是在 Activity 中。

您也可以使用 Application 类来打开数据库,但它会在每次应用启动时打开(例如,当您收到 BroadcastReceiver 时)

关于android - 如果我不关闭 Android 中的数据库会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11447017/

相关文章:

Android 网络检查不可靠

java - 将 com.google.android.gms 的版本更新到 12.0.0

javascript - 如何将 Firebase 用作具有生成键(JS)的关系数据库?

ruby-on-rails - 不同的日期保存到数据库 - 错误的时区

java - 为什么我的 SQLiteOpenHelper 构造函数中出现 "incompatible types: Bla cannot be converted to Context"?

android - 如何只为 View 设置触摸事件

android - 使用 ChildEventListener 和 limitToLast 查询时如何从 RecyclerView 中删除

mysql - 如何在涉及更新语句的查询中连接多个选择语句的结果

android - 连接以从两个表中获取数据

android - 数据库锁定问题android