Firebase 離線功能

我該怎麼用?磁碟永續性還是 keepSynced 呼叫?

根據我的經驗,我可以說它總是取決於你的應用程式的工作方式,以及你如何管理應用程式的事務和資料庫。例如,如果你的應用程式中使用者只是在編寫和讀取資料,但他無法刪除或編輯資料,那麼使用 DiskPersistence 將是正確的選擇。

此外,DiskPersistence 會將資料儲存在快取中,這意味著你的應用將在使用者的裝置中使用更多空間,這可能不是你的最佳選擇。

另一方面,如果你的應用程式管理了大量複雜的事務並且你的資料經常更新,那麼你可能應該避免使用 DiskPersistence 並在要保持新鮮的引用中使用 keepSynced

為什麼?

DiskPersistence 儲存在本地檢索的資料,如果你不將它與連續的 ListenerValueEvents 一起使用,有時會導致大量的去同步顯示你的資料。例如:

  1. 使用者 A 在你的應用上寫入 Hello World 訊息,該訊息已收到使用者 B 的接收
  2. 使用者 B 在手機中下載來自使用者 A 的訊息並看到訊息 Hello World
  3. 使用者 A 編輯他的訊息“Firebase 很酷”。
  4. 使用者 B 仍然會觀看 Hello World 訊息,即使他更新了資料,因為當 Firebase 過濾時,快照參考是相同的。

為了避免這種情況,最好的辦法是將連續的監聽器保留在你想要跟蹤的引用中。

我可以一起使用嗎?

當然,你可以,並且在大多數應用程式中可能最好避免下載大量資料,並且即使使用者沒有連線也可以讓使用者使用你的應用程式。

如果你不關心在使用者裝置中使用快取空間,我建議你在 FirebaseDatabase 物件中啟用 diskPersistence,並在每個參考中新增 keepSync 標記,這些標記可能在很短的時間內有很多次,或者你想保留新鮮的。