tso*_*gam 1 android firebase-realtime-database
我正在尝试获取一个值,然后将该值增加一。问题是我无法从 onDataChange 方法中获取这个值,如果我在方法内完成工作,我会得到循环,并且它不断地向这个值添加1。我应该怎么办?
这是我的代码:
rootRef.child("users").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
int rat = Integer.parseInt(dataSnapshot.child(current_user).child("rating").getValue().toString());
System.out.println(rat);
rat = rat + 1;
rootRef.child("users").child(current_user).child("rating").setValue(rat);
System.out.println(rat);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您需要从 firebase db 接收一次数据,那么您需要使用addListenerForSingleValueEvent(...)
而不是
addValueEventListener(...)
. 然后onDataChange()
只会返回一次。
addValueEventListener
每次有任何值更新时都会调用。
在上述情况下,每次增加值并再次更新节点时addValueEventListener
都会被重复调用,因此它的行为就像无限循环。
归档时间: |
|
查看次数: |
1159 次 |
最近记录: |