Android 如何以及何时在包含大量活动和服务的应用程序中关闭sqlite数据库

Android 如何以及何时在包含大量活动和服务的应用程序中关闭sqlite数据库,android,database,sqlite,Android,Database,Sqlite,我读了很多关于这个主题的文章,但是没有一个解决方案可以在我的应用程序中使用。 假设需要访问数据库的服务和活动很少。 当然,只有一个活动处于活动状态。但在最坏的情况下,有一个活动和两个服务运行后台访问数据库 所以,当我从活动的onResume关闭数据库时,访问数据库的服务将抛出异常。 当我从服务的onDestroy中关闭db,并且在活动中有一个打开的游标时,情况也是如此 我在我的应用程序对象中持有某种DBManager作为singleton。我在Application.onCreate中初始化DB

我读了很多关于这个主题的文章,但是没有一个解决方案可以在我的应用程序中使用。 假设需要访问数据库的服务和活动很少。 当然,只有一个活动处于活动状态。但在最坏的情况下,有一个活动和两个服务运行后台访问数据库

所以,当我从活动的onResume关闭数据库时,访问数据库的服务将抛出异常。 当我从服务的onDestroy中关闭db,并且在活动中有一个打开的游标时,情况也是如此

我在我的应用程序对象中持有某种DBManager作为singleton。我在Application.onCreate中初始化DBManager。但要关闭数据库,就必须冒着另一个服务和活动正在访问数据库的风险

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

这是我在市场上的应用


我也这么做,我使用一个单例数据库对象,在我的应用程序被销毁之前从不关闭它。到目前为止,我没有注意到任何问题。更详细的答案如下:


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

但提供者是应用程序之间共享数据的方式。如果我不共享数据,这将为应用程序增加很多复杂性,只需要这么一点点奖励;我不会说这是不使用ContentProvider的理由!我认为架构应该尽可能简单。如果不需要共享数据,我不会建议内容提供商。但很高兴知道这件事。也许我会在另一个应用程序中使用它。谢谢