安全地关闭数据库

时间:2011-06-22 12:02:40

标签: android

我的应用程序有一些活动和服务,它们都可以从同一个SQLite数据库读取和写入。为了保持它们的同步,我使用SQLiteDatabase对象的单例实例。

但是,每隔一段时间,我就会从客户那里通过Android Market控制台获得堆栈跟踪,并显示某些东西试图访问已经关闭的数据库。

目前,我的活动总是在onCreate和onPause(如果是isFinishing)中打开和关闭数据库。当一个Activity打开数据库时,它还会切换一个静态布尔值,以防止我的服务关闭它。我的服务(基于AlarmManager定期运行)始终打开,并在读取所需内容后立即关闭它。但是,如果Activity中的静态布尔值已打开,则服务不会关闭数据库。

我不确定我的洞在哪里,以及我是否真的需要一直关闭数据库,如果我有服务定期使用它。

1 个答案:

答案 0 :(得分:0)

您应该使用onDestroy方法关闭数据库以避免此问题。

确实有时onDestroy没有被调用,但这并不重要。如果操作系统取消了您的流程,那么无论如何都会清理所有资源。