gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:04 26 4
gpt4 key购买 nike

我正在使用 CursorLoader 和 ContentProvider 将数据库的内容加载到 GridView 中。

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

我找到了一些关于这个问题的主题,对“在 ContentProvider 中关闭数据库”的响应是:“内容提供者是在其托管进程创建时创建的,并且只要进程存在就一直存在,所以没有需要关闭数据库”。

所以,怎么了?由于数据库是在 ContentProvider 中打开的,如果我关闭它,返回的游标将为空,我该如何解决这个问题?

最佳答案

当数据库在关闭前被垃圾回收时打印该消息。这里有很多关于这个问题的讨论:

Closing the database in a ContentProvider

tl;dr:别担心。通常,关闭数据库实际上会适得其反。关闭你的事务和你的游标,让 android 管理数据库。

顺便说一句,注意在 onCreate 中打开数据库。如果您使用 SQLiteDatabaseHelper 打开数据库,则可能会调用 onUpdate 方法。在更新数据库的过程中,没有什么比让您的程序被 ANR 杀死更糟糕的了。

关于android - 如何关闭 Android 中 ContentProvider 中使用的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15464058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com