我设法得到一个计数,它有效,但每次关闭应用程序时计数器都会重新开始?我有这个方法来查找 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”方法会先运行。
添加回答
举报
0/150
提交
取消