我在自定义视图的不同方法中多次使用同一个光标。我应该在每次使用后关闭光标还是可以一直打开直到视图被破坏?对于数据库也是一样,一旦创建了包含此视图的活动,就可以打开它吗?当活动被销毁时,它可以关闭吗?我不断收到一个错误“close()从未在数据库上显式调用过…”当我按照上述方法操作时。
视情况而定。如果光标结果不会同时更改(例如,远程连接修改数据库),则可以。别忘了使用CursorLoader让Android自动管理你的光标(例如,如果你的应用程序崩溃,请关闭光标)。
对于数据库也是一样,一旦创建了包含此视图的活动,就可以打开它吗?当活动被销毁时,它可以关闭吗?
是的,您可以在onResume()
中打开,然后在onPause()
回调中关闭,或者当您知道您的数据库将不再被查询时。
我不断收到一个错误“close()从未在数据库上显式调用过…”当我按照上述方法操作时。
只有当你的应用程序崩溃时,这才是正常的。如果你像我上面说的那样做,就不应该发生。
一旦不需要连接,就要关闭与DB的所有连接。如果您以后需要连接,也可以保留连接,即在活动被破坏时关闭连接。
您可以尝试将db和光标代码移动到onResume和onPush以避免该错误。但我想一个更干净的方法是在您的活动中实现LoaderCallback。你考虑过吗?