Java android不关闭光标的缺点
关于Java android不关闭光标的缺点,java,android,sqlite,cursor,Java,Android,Sqlite,Cursor,关于光标,我有一些问题 我想知道不关闭光标的缺点是什么 它释放资源,但释放了哪些资源 如果我们不关闭光标?后果会是什么?程度如何 不关闭光标不会对活动产生任何影响,但会在日志猫中出错。如果不关闭光标,则访问数据库中的数据时会遇到问题,因为当数据库打开时,如果出现活动暂停或其他情况,则无法访问数据库。具体地说,如果让活动来管理,这个问题可以得到缓解。关闭光标将避免任何潜在的内存泄漏,因此是当不再使用时,应该始终关闭它们。光标只是一个界面。这在很大程度上取决于实现,实现您正在使用的接口的特定类 在S
光标
,我有一些问题
我想知道不关闭光标的缺点是什么
它释放资源,但释放了哪些资源
如果我们不关闭光标
?后果会是什么?程度如何
不关闭光标
不会对活动
产生任何影响,但会在日志猫中出错。如果不关闭光标,则访问数据库中的数据时会遇到问题,因为当数据库打开时,如果出现活动暂停或其他情况,则无法访问数据库。具体地说,如果让活动来管理,这个问题可以得到缓解。关闭光标将避免任何潜在的内存泄漏,因此是当不再使用时,应该始终关闭它们。光标只是一个界面。这在很大程度上取决于实现,实现您正在使用的接口的特定类
在SQLiteCursor的例子中,有很多东西需要清理(这是Froyo提供的):
如果不关闭光标,数据仍应保持一致,但您将泄漏内存…我认为您不会因为忘记关闭一个光标而看到很多问题。问题是(这几乎适用于任何内存泄漏),如果你一次又一次地这样做,最终会发生一些不好的事情
例如,我编写了一个应用程序,将数据从设备的SQLite DB上传到服务器。如果我没有在每次从数据库读取和写入数据时关闭光标,最终我会遇到内存不足错误和各种其他问题。我没有在代码中关闭光标,并且它正确显示数据,我正在访问数据,应用程序运行正常,这只是在logcat中给出了一个错误,即终结游标未被停用或关闭您的活动是否控制游标,这意味着您是否使用了manageCursor(X)?java不是自己处理所有内存问题吗?在这种情况下有什么特殊资源?我知道它应该很近,我只是想知道为什么?一个游标
背后有一个本地资源,比如一个文件句柄(记住,SQLite数据库使用索引文件)。另外,作为旁注,游标
s应该在finally
块中关闭,以保证它们被关闭。哪些本机资源?它们怎么会如此有害?或者不会造成极大的伤害?就像我说的。例如,需要关闭文件句柄以避免内存泄漏。
@Override
public void close() {
super.close();
deactivateCommon();
mQuery.close();
mDriver.cursorClosed();
}