Sqlite 完成游标尚未停用或关闭

发布于 2024-10-23 23:33:51 字数 139 浏览 2 评论 0原文

奇怪的是这并不是每次都会发生。我正在向数据库添加一些内容,如果我这样做几次,什么也不会发生,但是如果我继续添加并继续添加,则会出现此错误消息。有时它会发生第二次,而有时它会直到第五次才发生。似乎是随机的。任何人都知道为什么每次按下相同的按钮组合不会导致此错误消息?

What is weird about this is it doesn't happen every time. I am adding something to the database and if i do it a couples of times nothing happens, but if I keep adding and keep adding this error message occurs. Sometimes it happens the second time while other times it doesn't happen til the 5th. It seems to be random. Anyone have any idea why pressing the same combo of buttons wouldn't cause this error message every time?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

亢潮 2024-10-30 23:33:51

首先在 onDestroy 和 onStop 中关闭游标,如下所示:

 if(mCursor!= null && !mCursor.isClosed())
       mCursor.close();

然后尝试在使用游标对象后调用 startManagingCursor(cursor) ,如果您使用它进行查询等,请在操作后调用它你用光标制作。

First close the cursor in onDestroy and onStop like this:

 if(mCursor!= null && !mCursor.isClosed())
       mCursor.close();

and then try calling startManagingCursor(cursor) after where you use your cursor object, if you use it to make a query, etc, call it after the operation you make with the cursor.

半枫 2024-10-30 23:33:51

您可能会遇到与我从 ListView 的 sqlite 数据库获取数据时遇到的相同问题。

  1. 如果您在完成后关闭光标...ListView 是空白的。

  2. 如果您不关闭光标...ListView 将偶尔生成您所看到的错误。

解决方案?使光标对您的班级全局...并且仅将其关闭一次:当您完全完成它时。 (在 onDestroy 和/或 onStop 内)。

我不知道为什么#1 会发生。 (我尝试避免使用全局变量。但这里无法避免。)

You might be running into the same problem I had when getting data from a sqlite database for a ListView.

  1. If you close the cursor after you are done with it... the ListView is blank.

  2. If you do NOT close the cursor... the ListView will occasional generate that error you are seeing.

Solution? Make the cursor global to your class... and only close it once: When you are FULLY done with it. (Inside onDestroy and/or onStop).

I'm not sure why #1 happens. (I try to avoid using global vars. But can't avoid it here.)

蹲在坟头点根烟 2024-10-30 23:33:51

在出现错误之前,您应该看到以下内容:

D/dalvikvm(  285): GC_FOR_MALLOC freed

它表明 Android 机器正在释放潜在的泄漏以获得更多内存。您的光标也是泄漏,因为您没有使用 .close() 正确关闭它;

You should be seeing the following before the error:

D/dalvikvm(  285): GC_FOR_MALLOC freed

It shows that the android machine is freeing potential leaks to get more memory. Your cursor is also a leak, since you are not closing it properly with <cursor>.close();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文