这几天修复了程序bug,统一把游标cursor都关闭了一下。一不小心造了个bug。
通常查询数据库,获取到数据后,都要在finally把cursor关闭,然而需要注意区分:
context.getContentResolver().query()获得的cursor可以正常使用close()关闭。
而使用mContext.managedQuery()获得的cursor要区分版本进行关闭,如果在android4.0以上,如果使用了Cursor.close()方法;则会报如下异常:
E/AndroidRuntime(31184): Caused by: android.database.StaleDataException: Attempted to access a cursor after it has been closed.
在android 4.0及其以上的版本中,Cursor会自动关闭,不需要用户自己关闭。
解决办法:
if(VERSION.SDK_INT < 14) {
cursor.close();
}
网友评论