为了账号安全,请及时绑定邮箱和手机立即绑定

Android:当我关闭应用程序重新启动时,跟踪 Firestore 中的文档数量

Android:当我关闭应用程序重新启动时,跟踪 Firestore 中的文档数量

慕雪6442864 2021-08-04 09:56:45
我设法得到一个计数,它有效,但每次关闭应用程序时计数器都会重新开始?我有这个方法来查找 Firestore 集合中的文档数量: public void numberOfMessagesInConversation() {    CollectionReference messageRef = db.collection("users")            .document(userID)            .collection("conversations")            .document("conversation0") //Specified conversation            .collection("messages");    messageRef.addSnapshotListener(new EventListener<QuerySnapshot>() {        @Override        public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {            counter = documentSnapshots.size();            Log.d(TAG, "counter: " + counter);        }    });}然后我有另一个方法,我调用上面的方法,将 1 添加到计数器并将其作为字符串返回:public String createAndReturnMessageSentNumberStringForDocName() {    numberOfMessagesInConversation();    counter++;    String messageNumberForDoc = String.valueOf(counter);    Log.d(TAG, "createAndReturnMessageSentNumberStringForDocName: " + messageNumberForDoc);    return messageNumberForDoc;}最后,我有一种将消息上传到 Firestore 的方法,我使用计数的数字来命名消息,方法是为文档创建名称,例如“消息 1”、“消息 2”、“消息 3”等。在柜台上。        public void addSentMessageToFirestoreDB(Map<String, Object> messageSent) {            String docNumber = createAndReturnMessageSentNumberStringForDocName();            Log.d(TAG, "docNumber: " + docNumber);    }当我打开应用程序并编写第一条消息时,它会按时间顺序正确地广告消息,并准确跟踪消息。但是,当我关闭应用程序并重新打开它时,它从较低的数字开始计数?我在顶部定义了计数器,如下所示:int counter;所以我也不会在启动期间将其重置为零。以下是我按时间顺序输出的日志:我也很困惑为什么“createAndReturnMessageSentNumberStringForDocName”方法似乎在日志中首先被调用?我认为“numberOfMessagesInConversation”方法会先运行。
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

我只想发布关于我如何进行和解决原始问题的我自己问题的更新。

我直接询问 Firebase,他们建议我使用分布式计数器/分片。


查看完整回答
反对 回复 2021-08-04
  • 2 回答
  • 0 关注
  • 214 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信