我设法得到一个计数,它有效,但每次关闭应用程序时计数器都会重新开始?
我有这个方法来查找 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”方法会先运行。
ibeautiful
相关分类