如何以及何时关闭sqlite数据库在应用程序中有很多活动和服务

时间:2011-11-28 13:34:00

标签: android database sqlite

我阅读了很多关于这个主题的内容,但我的应用程序中无法使用任何解决方案。 假设需要访问db的服务和许多活动很少。 当然只有一项活动是活跃的。但在最糟糕的情况下,有一个活动和两个服务运行后台访问数据库。

所以当我从activity的onResume关闭db时 - 访问db的服务会抛出异常。 同样是当我从服务的onDestroy关闭db并且活动中打开了游标。

我在我的应用程序对象中使用某种DBManager作为单例。我在Application.onCreate中初始化DBManager。但是没有地方可以关闭数据库而不会冒另一个服务和活动访问它的风险。

所以现在我从不关闭数据库 - 这样做有什么后果吗? 是否有相同的简单(或不太复杂)的解决方案来关闭DB?

这是我在市场上的应用

russian version

english version

2 个答案:

答案 0 :(得分:4)

您应该尝试使用ContentProviders,Android系统将根据需要处理创建/打开/关闭数据库。

答案 1 :(得分:3)

我这样做,我使用单例数据库对象,并且在我的应用程序被销毁之前永远不会关闭它。到目前为止我没有发现任何问题。这里有一个更详细的答案:

https://stackoverflow.com/a/4842251/448625