2016-04-21 53 views
0

我試圖實現一個解決方案,將參考數據存儲在我的應用程序的數據庫中。使用rx java加載參考數據,但必要時阻止

數據最初存儲爲JSON文件,我需要在每次啓動時從服務器進行同步。我有一個本地應用程序的文件副本。每次啓動我都必須檢查版本的共享首選項。如果它不存在,我認爲這是第一次發射。所以我需要讀取這些文件,將這些文件寫入數據庫,並在完成時觸發完成。第一個屏幕希望這些數據位於數據庫中,因此我將不會在此場景中顯示該屏幕的UI,直到該過程完成。

但是在未來,同步這些文件的網絡調用可能異步發生,因此只要我看到共享的首選項有一個版本號,然後完全更新完全更新,就希望能夠在我的observable上完成啓動異步

我該如何設置一個流來表示這個。我認爲,流型很可能將被作廢,我會剛剛火onCompleted /錯誤的有關數據,只有哪些過程完成後,用戶不關心

回答

0

你可以做這樣的事情:

updateChecker.hasUpdates() 
     .flatMap(hasUpdates -> { 
      if (hasUpdates) { 
       return dataUpdater.update(); 
      } 

      return Observable.just(false); 
     }) 

假設

class UpdateChecker { 
    public Observable<Boolean> hasUpdates() { 
     return Observable.just(true); // Replace by API call 
    } 
} 

class DataUpdater { 
    public Observable<Boolean> update() { 
     // update the database here 
     return Observable.just(true); 
    } 
}