我正在使用CursorLoader和ContentProvider将数据库的内容加载到GridView中。
应用程序正在运行但是在日志中写了几次“close()从未在数据库上显式调用。”
我发现了一些关于这个问题的主题以及对“ContentProvider中的关闭数据库”的响应:“内容提供程序是在创建托管进程时创建的,并且只要进程有效,就会保留,所以没有需要关闭数据库“。
那么,出了什么问题? 当数据库在ContentProvider中打开时,如果我关闭它,返回的光标将为空,我如何解决这个问题?
答案 0 :(得分:2)
在关闭之前对db进行垃圾回收时会打印该消息。这里有很多关于这个问题的讨论:
Closing the database in a ContentProvider
tl;博士:别担心。通常,关闭数据库实际上会产生相反的效果。关闭你的交易和你的游标,让android管理数据库。
顺便说一句,小心打开onCreate中的数据库。如果使用SQLiteDatabaseHelper打开数据库,则可能会调用onUpdate方法。在更新数据库的过程中,没有太多可能比让你的程序被ANR杀死更糟糕。