我在自定义视图中以不同的方法多次使用相同的光标。我应该在每次使用后关闭光标还是可以保持打开直到视图被破坏?对于数据库来说,一旦创建了保存此视图的活动并在活动被销毁时关闭,它是否可以打开?我不断收到错误' close()从未在数据库中明确调用过...'当我按上述方式做的时候。
答案 0 :(得分:2)
我应该在每次使用后关闭光标还是可以保持打开直到 视图被破坏了?
取决于。如果光标结果不会同时改变(例如远程连接修改DB),那就没问题。不要忘记使用CursorLoader
让Android自动管理光标(例如,如果您的应用崩溃,请关闭光标)。
对于数据库来说,一旦活动就可以打开它 保持此视图是在活动被销毁时创建和关闭的吗?
是的,您可以在onResume()
中打开并关闭onPause()
回调,或者当您知道不再要查询您的数据库时。
我不断收到错误'close()从未明确调用过 在数据库上......'当我按照上述方式进行时。
只有当您的应用崩溃时,这才是正常现象。如果你像我上面所说的那样,不应该发生。
答案 1 :(得分:1)
您可能希望在不需要时关闭与DB的所有连接。如果以后需要它们,可以保持连接,即在要销毁Activity时关闭连接。
答案 2 :(得分:1)
您可以尝试将db和cursor代码移动到onResume和onPause以避免该错误。但我认为一个更干净的方法就是在你的Activity中实现LoaderCallbacks。你考虑过吗?