例1
public voID String getResultsAndReturnString() { String result = ""; sqliteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = qb.query(db,projection,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,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,需要还是不需要?全部内容,希望文章能够帮你解决android – 显式关闭SQLite数据库中的Cursor,需要还是不需要?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)