2012-10-15 42 views
3

我在自定义视图中以不同的方法多次使用相同的光标。我应该在每次使用后关闭游标还是保持打开状态,直到视图被破坏?对于数据库也是如此,一旦持有此视图的活动被创建并在活动被销毁时关闭,它可以被打开吗?如上所述,我不断收到错误'close()从未显式调用数据库...'。什么时候应该关闭游标和db?

回答

2

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

取决于。如果游标结果不会同时发生变化(例如,远程连接修改数据库),那么就可以。不要忘记使用CursorLoader让Android自动管理您的光标(例如,如果您的应用崩溃,请关闭光标)。

而同样的数据库,可以一次被创建 持有这种观点的活动被打开,当活动被销毁关闭?

是的,你可以在onResume()和关闭onPause()回调打开,或当你知道你的数据库是不会再被质疑。

我不断收到错误“close()方法从未被明确要求数据库 ......”当我做如上文所述。

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

1

一旦你不需要它们,你可能想要关闭与数据库的所有连接。如果您稍后需要连接,则保持连接即可,即当活动被销毁时关闭连接。

+0

好的。从这个错误可能来自哪里的任何想法? db在onCreate()中打开并在onStop()中关闭,那么它怎么还说它没有关闭? –

1

您可以尝试将您的数据库和游标代码移至onResume和onPause以避免该错误。但我想一个更简洁的方法就是在您的活动中实施LoaderCallbacks。你有没有考虑过?

相关问题