android没有关闭游标的缺点

我对Cursor有一些疑问。

我想知道不关闭Cursor什么缺点?

它释放资源,但是哪些资源被解除分配?

如果我们不关闭Cursor ? 会有什么后果和程度?

不关闭Cursor不会影响Activity ,但它会在log cat中出错。

关闭Cursor将避免任何潜在的内存泄漏,因此,它们应该在不再使用时始终关闭。

游标只是一个接口。 很大程度上取决于实现,实现您正在使用的接口的具体类…

在SQLiteCursor的情况下,有很多事情要清理(这是来自Froyo):

 @Override public void close() { super.close(); deactivateCommon(); mQuery.close(); mDriver.cursorClosed(); } 

没有关闭你的光标,数据应该仍然是一致的,但你会泄漏内存……

忘记关闭一个光标,我认为你不会看到很多问题。 问题(这几乎适用于任何内存泄漏)是,如果你一遍又一遍地继续这样做,最终会发生一些不好的事情。

例如,我编写了一个应用程序,将数据从设备的SQLite DB上传到服务器。 如果我每次从数据库读取和写入时都没有关闭光标,最终我会遇到内存不足错误和其他各种问题。

如果不关闭游标,则在数据库中访问数据时会遇到问题,因为在数据库打开时,如果“活动”暂停或其他情况发生,则无法访问。 具体来说,如果让Activity管理它,可以缓解此问题。