【问题标题】:Android Firebase Database keeps updating valueAndroid Firebase 数据库不断更新价值
【发布时间】:2019-03-06 13:52:24
【问题描述】:

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

活动

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 实用程序 私有静态数据库参考数据库;

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

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 哈哈,我是一名IOS开发人员,我遇到了同样的问题,这个答案帮助我找到了解决方案。非常感谢! :)
    猜你喜欢
    • 2017-09-04
    • 2017-11-09
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2019-03-24
    • 2017-11-28
    • 1970-01-01
    • 2019-04-05
    相关资源
    最近更新 更多