我有一些关于Cursor
.
我想知道不关闭 a 的缺点是Cursor
什么?
它释放资源,但释放了哪些资源?
如果我们不关闭Cursor
?后果是什么,程度如何?
不关闭 aCursor
不会Activity
有一点影响,但它会在 log cat 中产生错误。
我有一些关于Cursor
.
我想知道不关闭 a 的缺点是Cursor
什么?
它释放资源,但释放了哪些资源?
如果我们不关闭Cursor
?后果是什么,程度如何?
不关闭 aCursor
不会Activity
有一点影响,但它会在 log cat 中产生错误。
关闭 aCursor
将避免任何潜在的内存泄漏,因此是的,它们应该在不再使用时始终关闭。
我认为您不会因为忘记关闭一个光标而看到很多问题。问题(这适用于几乎所有内存泄漏)是,如果你一遍又一遍地这样做,最终会发生一些不好的事情。
例如,我编写了一个将数据从设备的 SQLite DB 上传到服务器的应用程序。如果每次从数据库读取和写入数据时我都没有关闭游标,最终我会遇到内存不足错误和其他各种问题。
光标只是一个界面。很大程度上取决于实现,实现您正在使用的接口的特定类......
在 SQLiteCursor 的情况下,有很多事情需要清理(来自 Froyo):
@Override
public void close() {
super.close();
deactivateCommon();
mQuery.close();
mDriver.cursorClosed();
}
不关闭光标,数据应该仍然是一致的,但你会泄漏内存......
如果您不关闭游标,那么您将无法访问数据库中的数据,因为当数据库打开时,如果发生 Activity 暂停或其他情况,则无法访问它。具体来说,如果让 Activity 来管理,这个问题就可以得到缓解。