2011-07-29 27 views
0

说我已经得到了从数据库调用只是返回的光标:这是否/ elseif使我的光标查询数据库两次?

Cursor myCursor = db.rawQuery(someQuery, null); 

根据该文档时,光标并不实际填充任何呼叫都向它提出之前,像getCount将()为例。所以我的问题是,下面的代码是否实际查询我的数据库两次?或者Android会在第一个'if'语句之后缓存Cursor对象,使'else if'语句访问缓存对象吗?

回答

1

不,它没有。游标对象实际上包含它自己的计数。你可以看到在SQLiteCursor对象here的源代码。取一看getCount将()方法:

@Override 
public int getCount() { 
    if (mCount == NO_COUNT) { 
     fillWindow(0); 
    } 
    return mCount; 
} 

将只检查第一次。 mCount仅在重新查询游标时更新(请参见同一页上的QueryThread.run())。

相关问题