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

Android:我真的需要担心关闭SQLite数据库实例吗?,android,sqlite,Android,Sqlite,我的Android应用程序经常记录错误,抱怨我未能发布语句、游标和数据库。事实上,我在使用它们的代码末尾显式释放finally{}块中的所有游标,并在包含它们的类的finalize()方法中关闭数据库 应用程序的结构使我很难显式调用数据库对象上的close()方法(在终结器中除外),因为,例如,使用数据库的类不是活动类,而是活动间接使用的类。因此,该类本身不知道它最终连接到的活动何时被销毁 我需要关心这个吗?我是否因为没有显式关闭数据库实例而永久性地泄漏某些资源?是否存在无法写入文件的危险?An

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

应用程序的结构使我很难显式调用数据库对象上的close()方法(在终结器中除外),因为,例如,使用数据库的类不是活动类,而是活动间接使用的类。因此,该类本身不知道它最终连接到的活动何时被销毁

我需要关心这个吗?我是否因为没有显式关闭数据库实例而永久性地泄漏某些资源?是否存在无法写入文件的危险?Android上的SQLite实现是否进行写缓存?我可以关闭它或强制同步吗

安卓VM关于终结器的政策是什么?它们是否保证最终运行


Frank

我在我的应用程序中发现一个强制关闭问题,该问题是由于未关闭的连接造成的。在我的例子中,查询花费了很长时间,用户可以返回到某个活动并重新单击以强制执行新查询

我只是在调试应用程序时发现了这一点,因为它最终生成了一些我认为在执行时不可能的代码


仅仅关闭我的连接就解决了这个问题。所以,说来话长,保持整洁也无妨。猜测您知道这一点,并且您只是在寻找验证?

,这可能会减少一些例外情况。

是的,我通常会清理这些内容,但在本例中,我是在向已经存在的内容添加数据库功能。对于在非gc环境中得到的有保证的析构函数调用,有一些话要说。好地方清理。