如何关闭Android中ContentProvider中使用的数据库

如何关闭Android中ContentProvider中使用的数据库,android,database,android-cursorloader,Android,Database,Android Cursorloader,我正在使用游标加载程序和内容提供程序将数据库的内容加载到GridView中 应用程序正在工作,但日志中多次写入“close()从未在数据库上显式调用” 我找到了一些关于这个问题的主题,对“在ContentProvider中关闭数据库”的回应是:“内容提供商是在创建其托管进程时创建的,并且在该进程创建时一直存在,因此无需关闭数据库” 那么,出了什么问题? 由于数据库是在ContentProvider中打开的,如果我关闭它,返回的光标将为空,如何解决此问题?在关闭数据库之前对数据库进行垃圾收集时,会

我正在使用游标加载程序和内容提供程序将数据库的内容加载到GridView中

应用程序正在工作,但日志中多次写入“close()从未在数据库上显式调用”

我找到了一些关于这个问题的主题,对“在ContentProvider中关闭数据库”的回应是:“内容提供商是在创建其托管进程时创建的,并且在该进程创建时一直存在,因此无需关闭数据库”

那么,出了什么问题?
由于数据库是在ContentProvider中打开的,如果我关闭它,返回的光标将为空,如何解决此问题?

在关闭数据库之前对数据库进行垃圾收集时,会打印此消息。这里有很多关于此问题的讨论:

别担心。一般来说,关闭数据库实际上会适得其反。关闭事务和游标,让android管理数据库


BTW,注意打开OnCub中的DB。如果使用SqLeDeDATabaseHelp打开DB,可能会调用OnUp更新方法。在更新DB的过程中,没有太多可能比您的程序被ANR杀死更糟糕。

确保您在 Cordon提供程序中打开数据库。t在其他地方(例如,在
插入
或查询````中),您不需要关闭数据库,请参见。@vmironov建议:不应在
onCreate()
中调用可能较慢的操作。