【发布时间】:2020-07-12 14:31:47
【问题描述】:
我的代码有问题。我只想在添加或删除文档时收听。代码运行良好。现在,当添加文档时 - 出现吐司。这很好用。但是当我查看数据库中的读取计数器时——它增长得如此之快,就像函数是 100% 的时间从数据库中读取所有数据一样——不仅仅是为了改变,就像我想要的那样。我只需要听集合中的变化。这是在android中做到这一点的一种方法吗? 我有一个 webapp,我的 javascript 代码运行良好,只有在更改出现时才读取数据。
在我的代码下面:
public void listenToDocument() {
// [START listen_document]
myDatabase.collection("markery").addSnapshotListener(new EventListener<QuerySnapshot>()
{
@Override
public void onEvent(@Nullable QuerySnapshot snapshots,
@Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.w(TAG, "listen:error", e);
return;
}
for (DocumentChange documentChange : snapshots.getDocumentChanges()) {
switch (documentChange.getType()) {
case ADDED:
String popup_data = documentChange.getDocument().getData().get("popup_data").toString();
GeoPoint geop = (GeoPoint) documentChange.getDocument().getData().get("geop");
Context context = getApplicationContext();
Toast toast = Toast.makeText(context, popup_data, Toast.LENGTH_LONG);
toast.show();
double lng = geop.getLongitude();
double lat = geop.getLatitude();
symbolLayerIconFeatureList.add(Feature.fromGeometry(
Point.fromLngLat(lng, lat)));
break;
case MODIFIED:
break;
case REMOVED:
break;
}
}
}
});
// [END listen_document]
}
【问题讨论】:
-
您是否在 Firebase 控制台中打开了文档列表?如果是这样,请记住,Firebase 控制台执行的任何读取也计入您的项目使用量,并且(在早期开发期间)通常比您的实际代码更有可能增加读取计数。
标签: android firebase google-cloud-firestore