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(); 
    } 
    } 

回答

1

這是當活動重新創建(如旋轉期間)。裝載程序已經完成了之前的工作,因此它只是將其重新提供給(重新創建的)活動。

相關問題