2011-01-29 72 views
1

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

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

这是不正确的这样做?在我调用getActiveScheduleInfo的方法中,根据特定的条件,我有多个返回语句。所以,我并没有在每个返回行之前关闭光标,而是用Try来包围条件测试,并在我的Finally中关闭所有项。

一切看起来应该是工作,所以我非常感谢任何帮助!

非常感谢! Paul

回答

1

我能弄明白这一点!我希望这能帮助那些有同样问题的人。

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

我采取以下步骤:

  1. 打开数据库。
  2. 创建一个新的光标并执行我的查询。
  3. 通过游标迭代并执行所需的任务
  4. 执行一些其他逻辑
  5. 关闭游标和数据库在最后块。

我发现我的第4步,执行一些其他的逻辑,在关闭我的光标之前,导致它,由于缺乏更好的术语,超时并导致此错误。从现在开始,我从光标读取必要的数据,而不是一行代码,我关闭了光标。 :)这已经完全消除了这些随机错误,并且我再次运行了干净的代码。

我希望能帮助他人解决同样的问题!保重,

保罗