你应该在onDestroy()或onStop()函数中关闭它吗?
答案 0 :(得分:3)
我个人更喜欢在使用它之后立即关闭数据库,保持数据库打开类似于保持FileStream
打开,我认为这不是一个好主意。根据您的使用情况,您应该尽快在数据库上调用close();
。
更新
关于原始问题,可以在onDestroy()
事件上关闭数据库。
答案 1 :(得分:1)
最好最迟以onPause()
方法关闭数据库。在此之后,如果操作系统需要资源,可能会在不事先通知的情况下终止该操作,从而可能会损坏您的数据库。绝对不要将此推迟到onStop()
或onDestroy()
。来自the docs:
onPause()
是保证在进程被终止之前被调用的最后一个方法 - 如果系统必须在紧急情况下恢复内存,则可能不会调用onStop()
和onDestroy()
。
另一种方法是将您的所有数据库访问权限移至Service或ContentProvider,它们具有各自的生命周期和与操作系统交互的规则。
答案 2 :(得分:0)
我从未明确关闭SQLite数据库。
我总是使用扩展SQLiteOpenHelper
的类,并且有方法可以执行我需要的任何操作,并且永远不会保留对数据库本身的永久引用。一旦SQLiteOpenHelper
超出范围,就会清理数据库引用。
YMMV,但它归结为你如何设计你的应用程序 - 在我开始为Android编程之前,我已经在Windows平台上使用SQLite数据库很多年了,而且我还没有一个损坏的数据库。 / p>
答案 3 :(得分:0)
您必须在不再需要该连接时立即关闭数据库连接,并且还必须关闭该连接,您必须调用close()。