当我们第一调用android.database.sqlite.SQLiteCursor的getCount()时,当前线程会锁定数据库,在该操作完成后才解锁。
其调用关系如下:
at android.database.sqlite.SQLiteQuery.native_fill_window(Native Method)
at android.database.sqlite.SQLiteQuery. fillWindow( SQLiteQuery.java:73)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:287)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:268)
at android.widget.CursorAdapter. getCount (CursorAdapter.java:132)
如果是第一次调用 SQLiteCursor 的 getCount () 的话,在getCount()中,它会调用 fillWindow (),
在SQLiteCursor的 fillWindow() 中,它又会调用
SQLiteQuery的 fillWindow()
android.database.sqlite.SQLiteCursor 的相关 源码如下:
@Override
public int getCount() {
if (mCount == NO_COUNT) {
fillWindow(0);
}
return mCount;