猿问

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

我设法得到一个计数,它有效,但每次关闭应用程序时计数器都会重新开始?


我有这个方法来查找 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”方法会先运行。


慕雪6442864
浏览 215回答 2
2回答

ibeautiful

我只想发布关于我如何进行和解决原始问题的我自己问题的更新。我直接询问 Firebase,他们建议我使用分布式计数器/分片。
随时随地看视频慕课网APP

相关分类

Java
我要回答