我有一些关于Cursor
的问题。android没有关闭游标的缺点
我想知道是不是关闭Cursor
的缺点是什么?
它重新分配资源,但释放什么资源?
如果我们不关闭Cursor
?会有什么后果和在多大程度上?
未关闭Cursor
稍微不影响Activity
,但它在log cat中给出错误。
我有一些关于Cursor
的问题。android没有关闭游标的缺点
我想知道是不是关闭Cursor
的缺点是什么?
它重新分配资源,但释放什么资源?
如果我们不关闭Cursor
?会有什么后果和在多大程度上?
未关闭Cursor
稍微不影响Activity
,但它在log cat中给出错误。
如果不关闭游标,那么你将有访问您的数据的问题在你的数据库,因为在数据库是开放的,它不应该访问的东西发生这样的活动被暂停或以其他方式。具体来说,如果您让活动管理它,则可以缓解此问题。
光标只是一个接口。这在很大程度上取决于执行情况,有什么具体的类,它实现您所使用的接口...
在SQLiteCursor的情况下,有相当多的事情让清理后(这是从升级Froyo):
@Override
public void close() {
super.close();
deactivateCommon();
mQuery.close();
mDriver.cursorClosed();
}
不关闭你的光标,数据仍然应该是一致的,但你会泄漏内存...
我不认为你会看到从忘记关闭一个游标的许多问题。这个问题(这几乎适用于任何内存泄漏)是,如果你一遍又一遍地做,最终会发生一些不好的事情。
例如,我写了一个应用程序从设备的的SQLite数据库是数据上传到服务器。如果我每次完成从数据库读取和写入的操作都没有关闭游标,最终会遇到内存不足错误和其他各种问题。
我havnt关闭了我的代码中的游标,它正在正确显示数据,我正在访问数据和应用程序运行正常, 它只是在logcat中发生错误完成游标尚未停用或关闭 – Haris 2012-08-09 21:32:20
是您的控制游标含义的活动是否使用了manageCursor(X)? – JoxTraex 2012-08-09 22:22:13
不,它工作时没有管理游标 – Haris 2012-08-10 07:11:33