在第一次使用,也就是剛得到cursor物件的時候,使用這兩個方法都能得到一樣的效果,就是把游標記錄指定到第一行記錄.
從原始碼中可以看出端倪
cursor是個介面,具體的實現類是abstractcursor
abstract classabstractcursorimplementscrossprocesscursor
public inte***cecrossprocesscursorextendscursor在abstractcursor中實現了這兩個方法:
@override
public final boolean movetofirst()
@override
public final boolean movetonext()
可以看出,最終是呼叫了movetoposition定位到絕對位置,而這裡的mpos初始值是-1;
public abstractcursor()
這裡再補充一下呼叫contentresolver的過程,一般是這樣呼叫的getcontext.getcontentresolver 得到乙個contentresolve(抽象類)物件.
而getcontentresolver這個方法是在具體的contextimpl類中實現的.
@override
public contentresolver getcontentresolver()
super(context);
mmainthread = mainthread;
}@override
protected icontentprovider acquireprovider(context context, string name)
@override
protected icontentprovider acquireexistingprovider(context context, string name)
@override
public boolean releaseprovider(icontentprovider provider)
private final activitythread mmainthread;
}執行contentresolver的query方法,會先去查詢contentprovider在客戶端的**contentproviderproxy(該類實現了icontentprovider介面,所以會直接返回這個介面)
public final cursor query(uri uri, string projection,
string selection, string selectionargs, string sortorder)
try
// force query execution
qcursor.getcount();
long durationmillis = systemclock.uptimemillis() - starttime;
maybelogquerytoeventlog(durationmillis, uri, projection, selection, sortorder);
} catch (remoteexception e) catch(runtimeexception e)
}
最終會呼叫activitythread的同名的方法,去通過跨程序獲取provider的**.跟進去看一下acquireprovider方法:
public final icontentprovider acquireprovider(context c, string name) else //end else
} //end synchronized
return provider;
實際上拿到的這個icontentprovider物件,是binder服務端的具體實現類contentprovidernative
該類中的query方法:
public cursor query(uri url, string projection, string selection,
string selectionargs, string sortorder) throws remoteexception
return adaptor;
}
返回了乙個bulkcursortocursoradatper物件,
public final class bulkcursortocursoradaptor extends abstractwindowedcursor
public abstract class abstractwindowedcursor extends abstractcursor
主要這裡我們想要看這個provider執行query後返回的具體的cursor物件是哪個?所以說這個cursor物件是服務端返回的.
mov和movl 的區別
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!組合語言 assembly language 中 mov和movl 有什麼區別 舉例說明 in a word,they belong to two instruction set,movl is at t and mov is intel 參考正確...
彙編 lea指令和mov指令
load effective address,載入有效位址,可以將有效位址傳送到指定的的暫存器。指令形式是從儲存器讀資料到暫存器,效果是將儲存器的有效位址寫入到目的運算元,簡單說,就是c語言中的 在cpu內或cpu和儲存器之間傳送字或位元組,它傳送的資訊可以從暫存器到暫存器,立即數到暫存器,立即數到...
mov格式解析
peter lee 2008 06 14 一 簡介 二 原子 原子是quicktime用來構建等級資料結構的基本容器。新建立的quicktime原子就象樹的根。隨後的每個原子都包含在其中並且包含資料和其它原子。如果乙個quicktime原子包含其它原子,就被叫做父原子,包含在其中的原子就叫做葉原子。...