4

我在自定义视图中以不同的方法多次使用相同的光标。每次使用后我应该关闭光标还是可以保持打开状态直到视图被破坏?数据库也是如此,是否可以在创建保存此视图的活动后打开它,并在销毁活动时关闭它?当我按照上述方式执行操作时,我不断收到错误“数据库上从未显式调用 close()...”。

4

3 回答 3

2

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

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

数据库也是如此,是否可以在创建保存此视图的活动后打开它,并在销毁活动时关闭它?

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

当我按照上述方式执行操作时,我不断收到错误“数据库上从未显式调用 close()...”。

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

于 2012-10-15T20:01:08.803 回答
1

您可以尝试将您的数据库和光标代码移动到 onResume 和 onPause 以避免该错误。但我想一个更干净的方法是在你的 Activity 中实现LoaderCallbacks。你考虑过吗?

于 2012-10-15T19:57:28.987 回答
1

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

于 2012-10-15T19:53:43.120 回答