[英]Adding data from firebase causes an infinite loop
Pleas help, I have a problem when I want to add user point data from a Firebase database请帮忙,当我想从 Firebase 数据库添加用户点数据时遇到问题
I want to add the previous user's point to the newly obtained point.我想将前一个用户的点添加到新获得的点上。 This is the code that I use
这是我使用的代码
final DatabaseReference userDataRef = FirebaseDatabase.getInstance().getReference().child("Users").child(userRefEmail);
userDataRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String userCurrentPoint = dataSnapshot.child("point").getValue().toString();
if (userCurrentPoint != null) {
int finalPoint = Integer.parseInt(userCurrentPoint) + poin;
userDataRef.child("point").setValue(String.valueOf(finalPoint));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
But when I use it, there is an infinite continuous addition of points to the firebase database, how do I deal with this?但是在我使用的时候,firebase数据库中出现了无限连续加点,怎么处理呢?
Use SingleValueEvent
instead of ValueEventListener
, with SingleValueEvent
it will only be called once:使用
SingleValueEvent
而不是ValueEventListener
,使用SingleValueEvent
它只会被调用一次:
userDataRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String userCurrentPoint = dataSnapshot.child("point").getValue().toString();
if (userCurrentPoint != null) {
int finalPoint = Integer.parseInt(userCurrentPoint) + poin;
userDataRef.child("point").setValue(String.valueOf(finalPoint));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.