cursor为什么会变?
--------------------编程问答-------------------- 没有红色部分代码 你是如何看到cursor.getCount() = 0有红色部分代码 cursor.getCount() = 1 说明正确
你使用地方可能有问题,把使用的方法多贴点代码 --------------------编程问答-------------------- "回复1楼"
没有红色部分代码 你是如何看到cursor.getCount() = 0
在 cursor = this.getContentResolver().query(uri...)
跟一句 system.out
就看到了 cursor.getCount() = 0
刚又发现
其实在
ContentProvider部分的
Cursor cursor = null;
try{
cursor = mDB.query(......)
}
catch(Exception e){}
finally{关闭数据库代码}
System.out.println("query cursor = "+cursor.getCount());
try catch 代码块外面 检查cursor ,此时cursor 的 getCount() 已经变为 0 !!!
难道 cursor 生命周期 出问题了? --------------------编程问答-------------------- cursor 在用完之前是不能关闭数据连接的吧 --------------------编程问答-------------------- 你确保你两个查询是一样的吗?问题肯定出在查询的部分了。~ --------------------编程问答-------------------- 同意3楼,数据库连接关闭后,cursor就没了,应该是这个原因 --------------------编程问答--------------------
正解,但是数据库什么时候关掉呢?
不应该限制我什么时候使用cursor 吧?
曾经试图MockCursor 但是太麻烦了.
难道非要让我专门定义一个关闭数据库 uri ??
有这么干的吗??
--------------------编程问答-------------------- 什么时候用完数据什么时候关闭吧 --------------------编程问答-------------------- ContentProvider接口的返回类型明确规定是 Cursor
这个不能改.
有没有什么办法既可以关掉数据库 又可以不限制使用 Cursor 使用时间(前提是保证这个Cursor 还是那一次查询的结果)的办法 ?
--------------------编程问答-------------------- --------------------编程问答-------------------- 有啊,把这对象深拷贝,或者做持久化! --------------------编程问答-------------------- 不考虑持久化,没有必要,应程序退出也就不需要查询结果了,
你说的深拷贝是什么意思?
补充:移动开发 , Android