3

我有一個android應用程序使用片段和內容提供程序來訪問我的本地sqlite數據庫。 Listviews通常取決於多個數據庫查詢,以便它們的顯示基於查詢結果。假設我有三個光標加載器,我如何確保加載器1和2在加載器3之前都完成了?每次在計數器(protected int loadersToRun,loadersCompleted=0;)啓動加載器的如何在啓動第三個依賴返回數據之前等待兩個cursorloader返回數據?

+0

給'Loaders'唯一的id(1,2和3)並檢查傳入'onLoadFinished(...)'的'Loader'的id。維護全局'布爾值',例如'boolean loader1Complete = false',並在完成時將它們設置爲'true'。然後檢查兩個'booleans'是否都是'true'並且如果它們是''Loader' 3則開始。 – Squonk

回答

1

跟蹤,並有他們的每一個onLoadFinished函數調用

public void checkLoadersFinished(){ 
    loadersCompleted++ 
    if(loadersCompleted==loadersToRun){ 
     //Start loader 3 
     loadersCompleted=0; 
    } 
} 

如果你需要做的事情工作動態,可以實現通過使用默認情況下,對於onLoadFinished中的一組加載器ID,並運行checkLoadersFinished。我們使用Treeset爲每個加載器生成一個唯一的ID來跟蹤它們並在完成時將其刪除。

相關問題