Android 如果我不';在安卓系统中,你不能关闭数据库吗?
这个标题听起来可能有点疯狂,但这正是让我困惑的地方。我的应用大量使用本地数据库操作。正如Android文档和一些博客中所建议的,我扩展了Android 如果我不';在安卓系统中,你不能关闭数据库吗?,android,database,android-sqlite,Android,Database,Android Sqlite,这个标题听起来可能有点疯狂,但这正是让我困惑的地方。我的应用大量使用本地数据库操作。正如Android文档和一些博客中所建议的,我扩展了SQLiteOpenHelper类,并在那里定义了我的所有DB操作。由于一些my DB操作是在线程中执行的,因此打开和关闭DB会导致一些非法状态异常。因此,我将我的DB助手设置为Singleton,它解决了这些问题,还消除了每个DB操作的open和close操作。现在,尽管我从未关闭数据库,但一切似乎都很正常 我的困惑是有必要关闭DB吗 如果是,那么什么是正确
SQLiteOpenHelper
类,并在那里定义了我的所有DB操作。由于一些my DB操作是在线程中执行的,因此打开和关闭DB会导致一些非法状态异常。因此,我将我的DB助手设置为Singleton
,它解决了这些问题,还消除了每个DB操作的open
和close
操作。现在,尽管我从未关闭数据库,但一切似乎都很正常
- 我的困惑是有必要关闭DB吗
- 如果是,那么什么是正确的位置,是在主要活动的
中还是在其他地方onDestroy
- 如果我不关闭DB,有什么副作用
onCreate
方法中创建DBHelper
的实例,则在onDestroy
中写入以关闭数据库。因此,您可以确定,下次在onCreate
中,您的数据库尚未打开
如果您在服务中引用了DBHelper
,则应在服务中而不是在活动中打开和关闭它
您也可以使用
Application
类打开数据库,但每次启动应用程序时(例如,当您收到BroadcastReceiver
时)都会打开数据库。出现异常的原因是您试图通过不同的线程从同一数据库写入/读取数据
我相信关闭数据库的最佳位置是在main活动的
ondestory()
内我遇到了同样的问题。我打开了数据库,执行了一些操作,但忘记了关闭。实际上,我在logcat中看到了一些异常,即“发现泄漏”数据库被打开,但从未关闭