据我所知,在数据库关闭后,光标变为“无效”,是否同时关闭光标?这是否避免必须执行下面显示的操作?
例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)关闭不再需要的资源是一种很好的编程习惯.
原文地址:https://codeday.me/bug/20190620/1243963.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。