Android在应用程序级别关闭并打开SQLite数据库

时间:2014-07-29 16:17:27

标签: android sqlite application-lifecycle

我在应用程序级别声明并存储了SQLite数据库。我处理配置更改,如设备轮换,因此关闭数据库我将其设置在MainActivity的onDestroy中,但在if(this.isFinishing())内。

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

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

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

1 个答案:

答案 0 :(得分:2)

  

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

正确,这是正确的答案。

  

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

没有

  

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

没有

  

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

没有

  

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

没有

关闭数据库实际上并没有那么多。 SQLite是事务性的;执行这些事务时,所有数据库写操作都将写入磁盘。