通常,使用try-finally来确保程序异常时能正常关闭游标。
Cursor cursor = null; try { cursor = getContentResolver().query(URI, .....); //dosomething } finally { if (cursor != null) { cursor.close(); } }
典型的一种写法,但并不能确保游标不泄漏。下面是采用这种写法产生的一出异常:
ERROR/CursorLeakDetecter(11085):
android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
at android.content.ContentResolver.query(ContentResolver.java:323)
如果您稍不留意不会怀疑这块代码的问题,因为try-finally写法不存在逻辑上的问题。
由于这里未考虑到多线程场景,try-finally并不能保证query打开游标在dosomething时,被其他线程再次调用query打开游标。所以当遇到存在多线程的调用时必须对游标打开到关闭时间段添加锁,即这里是对try-finally块加锁。
相关推荐
游标图例用来显示图形中的游标,如图1所示。在图形上用游标可读取绘图区域上某个点的确切值,游标值会显示在游标图例中。 图1 图形缩放方式 图2 游标图例 选择游标图例右键快捷菜单的“创建游标”,在...
oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结
设置波形图的游标,设置游标参数,设置多个游标,可自由拖动。
Mysql游标(循环操作)
SQL Server对游标的使用要遵循:声明游标–打开游标–读取数据–关闭游标–删除游标。下面让我们来看看几种常用游标是怎么使用的! 1、只读游标的使用(只能使用next提取数据) --声明一个只读游标 declare cur_stu ...
使用游标更新数据库
游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或...
游标的使用 游标的使用 游标的使用 游标的使用 游标的使用 不会可以联系我
什么是游标?游标有什么作用?Oracle游标的类型?Oracle游标的状态有哪些,怎么使用游标属性?如何使用显示游标,?如何遍历循环游标?
oracle游标使用大全,详细描述了如何使用游标,创建游标等等
游标算法_伪码.pdf
详细介绍游标的创建,使用。里面有详细的例子,是见过的所有学习游标和过程最好的接招
海拉传感器游标算法
jdbcTemplate分页彻底解决,使用游标滚动jdbcTemplate分页彻底解决,使用游标滚动
SQL Server 游标用法 , 游标 Demo
sql server 游标实例sql server 游标实例sql server 游标实例sql server 游标实例
获取波形图游标,设置游标参数,设置多个游标,可自由拖动。
学习之用,游标操作多个数据库 学习之用,游标操作多个数据库 学习之用,游标操作多个数据库
这个三维建模是用SolidWorks2016完成的,这是一个游标卡尺的三维建模。
Oracle游标的一般使用