【发布时间】:2011-04-21 19:28:10
【问题描述】:
我的 Android 应用程序经常记录错误,抱怨我未能释放我的语句、游标和数据库。事实上,我在使用它们的代码末尾的 finally{} 块中显式释放了我的所有游标,并且我在包含它们的类的 finalize() 方法中关闭了我的数据库。
我的应用程序的结构使我很难显式调用数据库对象上的 close() 方法(除了在终结器中),因为例如,使用数据库的类不是 Activity 类,而是可能是一个活动间接使用的类。因此,该类本身不知道它最终附加到的 Activity 何时被销毁。
我需要担心这个吗?我是否通过不显式关闭我的数据库实例来永久泄漏一些资源?是否存在无法将某些内容写入文件的危险? Android 上的 SQLite 实现会写缓存吗?我可以将其关闭或强制同步吗?
Android VM 关于终结器的政策是什么 - 它们是否保证最终运行?
弗兰克
【问题讨论】: