找不到DatabaseObjectNotClosedException错误的来源

时间:2011-01-29 00:25:19

标签: android sqlite

我很难弄清楚我的问题在这里。我在我的程序中收到此错误,但它不会导致崩溃或类似的事情。我有一个我想要发布的更新,但我不想释放它,因为在某些时候抛出此错误。我已经阅读了有关此错误的所有相关帖子,但没有一个适用于我的情况。

我确保关闭DatabaseHelper和SQLiteDatabase对象。我也确定我关闭了所有的游标。此错误指向我的方法getActiveScheduleInfo,它返回一个Cursor对象。我已经确定每当我调用此方法时,返回的游标将在Finally块中关闭。

这样做不正确吗?在我调用getActiveScheduleInfo的方法中,我根据某些条件在其中有多个return语句。因此,不是在每个返回行之前关闭光标,而是使用Try围绕条件测试,并在我的Last中关闭所有内容。

一切看起来都应该有效,所以我真的很感激任何帮助!

非常感谢! 保罗

1 个答案:

答案 0 :(得分:1)

我能够弄清楚这一点!我希望这可以帮助那些有同样问题的人。

我这里没有做任何本来不正确的事情,但是花了很长时间才关闭我的一些游标。为了给您一个非常简短的背景,我无法使用托管查询或使用startManagingCursor,因为此代码位于自定义类中,而不是活动。我正在构建Android 2.0(API级别5),所以我没有使用新的CursorLoader对象。

我正在采取以下步骤:

  1. 打开数据库。
  2. 创建新光标并执行查询。
  3. 通过光标迭代并执行所需的任务
  4. 执行其他逻辑
  5. 在最后一个块中关闭光标和数据库。
  6. 我发现我的第4步,执行其他逻辑,在关闭我的Cursor之前,由于缺少更好的术语而导致它超时并导致此错误。从现在开始,我从光标读取必要的数据,而不是一行代码,我关闭了光标。 :)这完全消除了这些随机错误,我再次运行了清洁代码。

    我希望能帮助其他人解决同样的问题!小心,

相关问题