【发布时间】:2013-03-17 17:47:51
【问题描述】:
我正在使用 CursorLoader 和 ContentProvider 将数据库的内容加载到 GridView 中。
应用程序正在运行,但在日志中多次写入“close() 从未在数据库上显式调用。
我发现了一些关于这个问题的主题,对“在 ContentProvider 中关闭数据库是”的响应:“内容提供者是在创建其托管进程时创建的,并且只要进程存在就一直存在,所以没有需要关闭数据库”。
那么,怎么了? 由于数据库是在 ContentProvider 中打开的,如果我关闭它,返回的光标将为空,我该如何解决这个问题?
【问题讨论】:
-
确保您在
ContentProvider.onCreate方法中打开数据库,而不是在其他地方(例如在insert或查询中) -
不需要关闭数据库,见this thread。
-
@vmironov documentation 给出了确切的建议:不应该在
onCreate()中调用可能很慢的操作。
标签: android database android-cursorloader