2017-02-16 79 views
3

我有一個應用程序從Firebase實時數據庫中提取一些簡單的數據,並在此處簡單說明我想要的流程。Firebase如何檢測緩存數據是否可用

如果手機連接到互聯網:

  • 從火力數據庫

獲取數據。如果手機離線

  • 如果有數據firebase緩存 - >從緩存中獲取數據
    • 如果沒有什麼火力緩存 - >顯示應用程序存儲在本地的一些默認數據

的問題是,我沒有看到可能的方式來檢測,如果數據是在火力高速緩存中可用。所以當手機處於離線狀態時,我看不到應該顯示本地存儲的數據還是來自Firebase數據庫的緩存。

+0

Firebase可以爲您添加任何代碼。 –

+0

我相信@ibrcic會問如果手機處於離線狀態,應用程序可以檢測到被查詢的數據沒有被緩存(並且在這種情況下顯示其他默認數據) –

+0

如果您想要一個本地緩存,您可以查詢是否存在數據,您必須在Firebase SDK之上自行實施。 –

回答

0

Firebase爲您提供幫助。

即使您的應用程序暫時失去其網絡連接,Firebase應用程序也能正常工作。

此外,firebase應用程序還會自動處理臨時網絡中斷。 緩存數據在離線時可用,並且Firebase在網絡連接恢復時重新發送任何寫入。

如果這是不夠的,你需要脫機工作,您還可以啓用磁盤持久性只是增加:

FirebaseDatabase.getInstance().setPersistenceEnabled(true); 

更多信息here。編輯:
無法知道值是來自本地緩存還是來自遠程服務器。

只有一種方法可以確定您的應用當前是否已連接到Firebase數據庫服務器。
要實現它,您可以通過偵聽.info/connected值​​。

+0

謝謝您的評論,但不幸的是,這不是我正在尋找的。我知道firebase會自動處理所有這些事情,並且我已經設置了這樣做,沒有問題。我不知道如何檢測IF是否有實際的緩存數據。例如,如果用戶第一次運行應用程序並且沒有互聯網連接。在這種情況下,我想顯示一些默認數據,而不是Firebase中的數據(因爲Firebase回調從未觸發)。此外,如果用戶從應用程序等清除緩存的數據。 – ibrcic

+0

@ibrcic我明白,但你在我看來是用錯誤的方式使用firebase。它是一個實時數據庫,它不是sqllite數據庫,您應該遵循firebase方法。如果數據顯示來自緩存或服務器,則無論如何您都會顯示來自Firebase的數據,並且如果您第一次想要顯示不同的內容,則只需不顯示Firebase數據即可。你正在尋找一些不存在的東西。 –

+0

簡而言之,firebase上的數據是最新的數據,應用程序中的默認數據是我在編程應用程序時放置的數據。我只想確保在沒有互聯網連接且沒有緩存數據時才顯示默認數據。我認爲這是你應該能夠做的事情,檢查是否有一個實際的緩存數據,以便我可以顯示一些東西,如果沒有。 – ibrcic

相關問題