gpt4 book ai didi

java - Android Firebase 数据库不断更新值(value)

转载 作者:行者123 更新时间:2023-11-29 18:34:05 25 4
gpt4 key购买 nike

我正在尝试从 Firebase 实时数据库中获取作者分数。我成功获得了分数值。然后我将 100 加到这个值上并插入新值,但是当我插入分值时,分值会持续增加 100,例如,如果分值为 500 而不是变为 600,它将变为 600,然后变为 700,然后变为 800 等。如果我在 addExtraScore 方法中显示 Toast,它将按预期显示一次。

Activity

private void getAuthorScore()
{
database = FirebaseDatabase.getInstance().getReference();
database.child("Users").child(authorID).addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
User author = dataSnapshot.getValue(User.class);

authorScore = author.getScore();

addExtraScore();
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError)
{

}
});
}

private void addExtraScore()
{
int score = authorScore + 100;

FirebaseUtil.updateUsersScore(authorID, score);
}

Firebase 工具 私有(private)静态数据库引用数据库;

public static void updateUsersScore(String id, int score)
{
db = FirebaseDatabase.getInstance().getReference();
db.child("Users").child(id).child("score").setValue(score);
}

最佳答案

要解决这个问题,请更改以下代码行:

database.child("Users").child(authorID).addValueEventListener(/* ... */);

database.child("Users").child(authorID).addListenerForSingleValueEvent(/* ... */);

只获取一次数据。使用 addValueEventListener() 意味着您正在实时获取数据,并且每次更改时都会再次调用 onDataChange()

关于java - Android Firebase 数据库不断更新值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55024731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com