【发布时间】:2017-11-27 10:51:50
【问题描述】:
我已经开始在我的 Android 应用中使用 Firebase Firestore 数据库。 Firestore 实现的主要用例是在离线模式下创建一堆文档,然后在设备上线时上传它们。问题是“设备在线时间”是有限的,所以我需要向用户提供同步状态指示器。
【问题讨论】:
标签: android firebase google-cloud-firestore
我已经开始在我的 Android 应用中使用 Firebase Firestore 数据库。 Firestore 实现的主要用例是在离线模式下创建一堆文档,然后在设备上线时上传它们。问题是“设备在线时间”是有限的,所以我需要向用户提供同步状态指示器。
【问题讨论】:
标签: android firebase google-cloud-firestore
当您在使用离线数据时写入 Firestore 时,将在数据存储在本地时触发侦听器,然后在将数据存储在服务器上时再次触发,如 here 所述。一个可能的解决方案是向用户显示数据的当前状态或推送到服务器的项目的百分比。
这不是一个简单的解决方案,但它确实有效。
firestore.collection(COLLECTION)
.whereEqualTo(KEY, VALUE) // select documents created by particular device
.addSnapshotListener((querySnapshot, e) -> {
if (e != null) {
// ERROR
return;
}
boolean fromCache = querySnapshot.getMetadata().isFromCache();
if (!fromCache) {
// SYNC DONE
} else {
int connectivityStatus = NetworkUtil.getConnectivityStatus(getApplicationContext());
if (connectivityStatus == NetworkUtil.TYPE_NOT_CONNECTED) {
// WAITING ON CONNECTION...
} else {
// SYNCING...
}
}
});
【讨论】: