【问题标题】:Android closing and opening SQLite database in Application levelAndroid在应用程序级别关闭和打开SQLite数据库
【发布时间】:2014-09-21 02:36:09
【问题描述】:

我有一个在应用程序级别声明和存储的 SQLite 数据库。我处理诸如设备旋转之类的配置更改,因此我将数据库的关闭设置在 MainActivity 的 onDestroy 中,但在 if(this.isFinishing()) 中。

我遇到的问题是,如果在关闭应用程序后我尝试再次启动它,它会崩溃并告诉我它试图打开一个已经关闭的数据库。下次它将正确启动。我猜这是因为 Android 从来没有真正关闭过应用程序,因为没有必要,它仍然在后台。

我找不到在应用程序级别检测 onFinish/onDestroy.... 以关闭那里的数据库的方法。 我能做的唯一解决方法是不关闭数据库。但这可能会给我带来问题,也许在尝试再次打开它时,以防 Android 真的关闭了我的应用程序,不是吗?

有没有办法强制关闭应用程序? (我认为没有)。 有没有办法检测应用程序的关闭以关闭那里的数据库? 如果应用程序被 Android 关闭,我在尝试打开未关闭的数据库时会遇到问题吗?还是 Android 会关闭链接到将要关闭的应用程序的数据库?

【问题讨论】:

    标签: android sqlite application-lifecycle


    【解决方案1】:

    我能做的唯一解决方法是不关闭数据库

    正确,这是正确的答案。

    但这可能会给我带来问题,如果 Android 真的关闭了我的应用程序,在尝试再次打开它时可能会出现问题,不是吗?

    没有。

    有没有办法检测Application的关闭从而关闭那里的数据库?

    没有。

    如果应用程序被 Android 关闭,我在尝试打开未关闭的数据库时会遇到问题吗?

    没有。

    或者 Android 关闭了链接到它要关闭的应用程序的数据库?

    没有。

    关闭数据库并没有真正做那么多。 SQLite 是事务性的;当您执行这些事务时,您的所有数据库写入操作都会写入磁盘。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      相关资源
      最近更新 更多