gpt4 book ai didi

android - 明确地关闭 SQLite 数据库中的 Cursor,需要还是不需要?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:23 34 4
gpt4 key购买 nike

据我了解,在关闭数据库后,游标变为“无效”,是否也同时关闭了游标?这是否避免了必须执行如下所示的操作?

示例 1

 public void String getResultsAndReturnString() {
String result = "";
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = qb.query(db, projection, null, null,
null, null, null);
cursor.close(); <-- explicit cursor close example one
db.close();
return result;
}

示例 2

public void Cursor getResultsAndReturnCursor(){
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = qb.query(db, projection, null, null,
null, null, null);
return cursor;
}

public void closeOut(Cursor cursor, SQLiteDatabase dataBase){
cursor.close(); <-- explicit cursor close example two
dataBase.close();
}

最佳答案

游标在严格意义上并没有通过关闭数据库来关闭(它仍然存在并且您可以对其执行操作),但是如您所知,关闭数据库会使游标变得无用。出于多种原因,您应该在使用完游标后明确关闭它们:

1) 正如您所指出的,关闭数据库后,任何剩余的游标都将变为“无效”,并且无法依赖准确数据;

2) 您将在 LogCat 中看到警告;

3) 如果你维护对游标的引用,你就有内存泄漏的风险;和

4) 关闭不再需要的资源是一种很好的编程习惯。

关于android - 明确地关闭 SQLite 数据库中的 Cursor,需要还是不需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16641555/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com