2011-07-29 28 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())。

相關問題