什么时候应该关闭游标和数据库?

时间:2012-10-15 19:44:57

标签: android android-sqlite android-cursor

我在自定义视图中以不同的方法多次使用相同的光标。我应该在每次使用后关闭光标还是可以保持打开直到视图被破坏?对于数据库来说,一旦创建了保存此视图的活动并在活动被销毁时关闭,它是否可以打开?我不断收到错误' close()从未在数据库中明确调用过...'当我按上述方式做的时候。

3 个答案:

答案 0 :(得分:2)

  

我应该在每次使用后关闭光标还是可以保持打开直到   视图被破坏了?

取决于。如果光标结果不会同时改变(例如远程连接修改DB),那就没问题。不要忘记使用CursorLoader让Android自动管理光标(例如,如果您的应用崩溃,请关闭光标)。

  

对于数据库来说,一旦活动就可以打开它   保持此视图是在活动被销毁时创建和关闭的吗?

是的,您可以在onResume()中打开并关闭onPause()回调,或者当您知道不再要查询您的数据库时。

  

我不断收到错误'close()从未明确调用过   在数据库上......'当我按照上述方式进行时。

只有当您的应用崩溃时,这才是正常现象。如果你像我上面所说的那样,不应该发生。

答案 1 :(得分:1)

您可能希望在不需要时关闭与DB的所有连接。如果以后需要它们,可以保持连接,即在要销毁Activity时关闭连接。

答案 2 :(得分:1)

您可以尝试将db和cursor代码移动到onResume和onPause以避免该错误。但我认为一个更干净的方法就是在你的Activity中实现LoaderCallbacks。你考虑过吗?