0
自定義裝載機實現onStartLoading
下面的僞代碼執行從this blog post拍攝。當Loader啓動並且已經加載了尚未傳送給客戶端的數據時,什麼是scenerio?
您可以看到,根據這種方法,當加載器進入啓動狀態時,即調用onStartLoading
時,我們檢查mData
是否爲非空值,如果不是空值,則將先前加載的數據立即。 問題是什麼是已經加載數據的用例尚未交付?
起初我以爲,當裝載機從停止狀態進入啓動狀態的情況下可能是,和觀察者檢測到數據內容的變化,並且將數據加載,而裝載在停止狀態。 但事實並非如此,因爲你所提到的,「在停止狀態裝載機仍應監控更改這樣加載器會知道,迫使新的負荷,如果它是不斷重新開始的數據源。」,這意味着裝載機隨時監控更改數據源,但是在停止狀態下不加載數據,當裝載機進入啓動狀態的新數據(檢測到變化後)本質上是加載。
那麼當一個裝載機進入啓動狀態時,會有加載的數據存儲在mData
中,這個數據還沒有被傳送?
@Override
protected void onStartLoading() {
if (mData != null) {
// Deliver any previously loaded data immediately.
deliverResult(mData);
}
// Begin monitoring the underlying data source.
if (mObserver == null) {
mObserver = new SampleObserver();
// TODO: register the observer
}
if (takeContentChanged() || mData == null) {
// When the observer detects a change, it should call onContentChanged()
// on the Loader, which will cause the next call to takeContentChanged()
// to return true. If this is ever the case (or if the current data is
// null), we force a new load.
forceLoad();
}
}