Android:我真的需要担心关闭SQLite数据库实例吗?

时间:2011-04-21 19:28:10

标签: android sqlite

我的Android应用程序经常记录错误,抱怨我无法发布我的语句,游标和数据库。实际上,我在使用它们的代码末尾的finally {}块中显式释放了所有游标,并且我在包含它们的类的finalize()方法中关闭了我的数据库。

我的应用程序的结构使得我很难在数据库对象上显式调用close()方法(除了在终结器中),因为,例如,使用数据库的类不是Activity类但是可以是由Activity间接使用的类。因此,该类本身并不知道它最终附加的Activity何时被销毁。

我需要关注这件事吗?我是不是通过不明确关闭我的数据库实例而泄漏了一些资源?是否存在无法写入文件的危险? Android上的SQLite实现是否写入缓存?我可以将其关闭或强制同步吗?

Android VM关于终结器的政策是什么 - 它们最终会保证最终运行吗?

2 个答案:

答案 0 :(得分:1)

我在我的应用中发现了一个强制关闭问题,这是一个未关闭连接的结果。在我的情况下,查询花了很长时间,用户可以返回活动并重新单击强制新查询。

我只是在调试应用程序时才发现这个问题,因为它最终出现在我执行的那段时间里我认为不可能的代码中。

只需关闭我的连接解决了这个问题。所以,很长一段时间它不会伤到整洁。无论如何你猜你知道吗,你只是在寻找验证?

答案 1 :(得分:0)

Using SQLiteOpenHelper instead of SQLiteDatabase,可能会减少一些例外情况。