2010-09-17 66 views
0

在我开发的一个Android应用程序中,我打开一个游标到一个相当大的结果集(〜1k行)的查询,并保持打开无限期。这是一个好习惯吗?如果没有,我应该关闭onClose()处理程序中的游标,然后在onStart()处理程序中重新打开它吗?保持打开一个Sqlite光标

该应用似乎运行良好,但它有时在空闲很长一段时间后会随机崩溃,我认为它可能与光标有关。

回答

1

光标不应该永远保持打开状态,因为当您的应用最终被终止时,它会使数据库处于不正确的状态,如果您注意到,会在Log中显示一些错误。

你可以做的是在onStop中关闭它并在onStart中重新打开它。或者,您可以让Android通过在您的活动中致电startManagingCursor(c)自动为您处理此问题。

docs

+0

我在onDestroy方法中关闭它。我实际上找到了问题的根源,并且它与游标afaik无关。我想保持光标打开,因为重新创建它非常昂贵。 – ghempton 2010-09-17 04:46:21

+0

只要它在某个时候关闭,你应该没问题。请注意,可能无法一直调用onDestroy。 (检查生命周期) – smith324 2010-09-17 12:37:30