我正在構建一個Android應用程序,它必須離線工作數週,但可以在遠程數據庫聯機時立即與其同步。Firestore offline cache
我的問題是可以Firestore是一個很好的選擇嗎? Firestore保存其離線緩存多久?
我正在構建一個Android應用程序,它必須離線工作數週,但可以在遠程數據庫聯機時立即與其同步。Firestore offline cache
我的問題是可以Firestore是一個很好的選擇嗎? Firestore保存其離線緩存多久?
可將Firestore配置爲保留用於此類斷開/脫機使用的數據。我建議你閱讀的文檔的enable offline persistence部分,其中包含啓用此功能的這個樣本:
FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder() .setPersistenceEnabled(true) .build(); db.setFirestoreSettings(settings);
你的代碼是一樣的你是否已連接與否,因爲SDK簡單工作原理相同。如果您想檢測數據是否來自緩存(因此可能過時),請閱讀文檔中的Listen to offline data部分。
緩存中的數據在一段時間後不會過期。從緩存中刪除數據的唯一兩個原因:
對不起,如果我不夠清楚,但我的問題是Firestore保持其離線緩存多久?我已閱讀之前發送的鏈接,其中包含以下內容:「此功能會緩存您的應用正在使用的Cloud Firestore數據副本,因此您的應用可以在設備脫機時訪問數據。」 「積極使用」意味着什麼?如果我在一天或一週後沒有訪問它,它會刪除我的數據嗎?我可以配置它保留我的所有數據,直到我說不? –
沒有明確的緩存過期。它保存數據直到需要爲新數據騰出空間。 –
因此,如果它決定它需要空間,那麼它會刪除我的數據?在它開始刪除我的數據之前它可以存儲多少數據?這對我很重要,因爲我需要一個可靠的本地數據庫。 –
如果你聽雲公司的FireStore數據,你會得到緩存數據的即時快照,並且還更新時,您的應用程序能夠在線連接:
final DocumentReference docRef = db.collection("cities").document("SF");
docRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot snapshot,
@Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.w(TAG, "Listen failed.", e);
return;
}
// Determine if the data came from the server or from cache
String source = snapshot != null && snapshot.getMetadata().hasPendingWrites()
? "Local" : "Server";
// Read the data
if (snapshot != null && snapshot.exists()) {
Log.d(TAG, source + " data: " + snapshot.getData());
} else {
Log.d(TAG, source + " data: null");
}
}
});
持久性默認情況下,所以這種行爲啓用不需要任何配置。
看來如果您需要將大量數據保存到脫機緩存中,則需要使用SQLite或其他本地數據庫或緩存系統同步數據。 – wonsuc
嗨,你可以告訴你如何在firestore中離線插入數據 –