Обновить значение временной метки Firebase - PullRequest
1 голос
/ 06 апреля 2020

Я хочу обновить начальное значение метки времени сервера, хранящееся в моей базе данных firebase, поэтому я сделал это таким образом, чтобы значение метки времени впоследствии обновлялось, но, похоже, это вызывает серьезную проблему при запуске приложения в Сначала он работает нормально, но после изменения значения дважды, он просто зависает, как отметка времени постоянно обновляется. Я не знаю, как сделать его идеальным.

Ниже приведен код, который я добавил и хочу изменить значение метки времени.

  mRootRef.child("Chat").child(mCurrentUserId).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (!dataSnapshot.hasChild(mChatUser)){
                Map chatAddMap = new HashMap();
                chatAddMap.put("seen",false);
                chatAddMap.put("uid",mChatUser);
                chatAddMap.put("timestamp", ServerValue.TIMESTAMP);

                Map chatUserMap = new HashMap();
                chatUserMap.put("Chat/" + mCurrentUserId + "/" + mChatUser,chatAddMap);
                chatUserMap.put("Chat/" + mChatUser + "/" + mCurrentUserId,chatAddMap);

                mRootRef.updateChildren(chatUserMap, new DatabaseReference.CompletionListener() {
                    @Override
                    public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {

                        if (databaseError != null){
                            Log.d("CHAT LOG", databaseError.getMessage().toString());
                        }

                    }
                });
            }else {

                mRootRef.child("Chat").child(mCurrentUserId).child(mChatUser).child("timestamp").setValue(ServerValue.TIMESTAMP);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {


        }
    });
...