【问题标题】:I'm getting "Application did not close the cursor or database object that was opened here" but I put in the command to close it我收到“应用程序没有关闭在此处打开的游标或数据库对象”但我输入了关闭它的命令
【发布时间】:2012-03-19 07:20:56
【问题描述】:

这就是让我难过的地方。我在 onCreate 方法中打开数据库 然后我调用一个函数来打开一个游标做一堆事情,然后在函数结束时关闭游标。

然后我放入一个 OnPause 并在调用 super.onPause 函数之前关闭数据库

我还有一个 onResume 可以重新打开数据库并调用与 on create 相同的函数来刷新数据。

最后我得到了一个 onDestroy 函数,它在调用 super.onDestroy 之前也会关闭数据库。

这里是与数据库相关的部分 http://pastebin.com/GVcnsVCc

这是我的错误: http://pastebin.com/Vd6Sdqzp

此外,当我开始此活动或进行此活动时,我没有收到任何错误消息,但当我单击某个内容以从该活动转到另一个活动时,我会收到错误消息。

【问题讨论】:

  • 无需在 onPauseonDestroy 中关闭它,只需 onPause 即可。还要在你的onPause if 语句中添加一条日志消息,以查看它是否实际上正在关闭它

标签: android database sqlite


【解决方案1】:

不要startManagingCursor(c)。那是 a) 现在已弃用,b) 将尝试为您关闭()和重新查询()光标。这也意味着您不能自己关闭()游标,因为您还需要关闭数据库。 (它可以与 stopManagingCursor(c) 一起使用)

由于您似乎是自己处理查询,您可以直接跳过该部分。

您也可以在完成getdata() 后直接关闭数据库。除非您在应用程序处于活动状态时不断地读取/写入数据,否则无需将其保持打开状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 2015-02-12
    相关资源
    最近更新 更多