我正在构建一个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中离线插入数据 –