Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android不关闭光标的缺点_Java_Android_Sqlite_Cursor - Fatal编程技术网

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();
}