gpt4 book ai didi

java - 尝试更新数据库addValueEventListener

转载 作者:行者123 更新时间:2023-12-01 17:30:29 26 4
gpt4 key购买 nike

我正在尝试更新我的数据库。我正在做的事情不起作用。我第一次调用此方法时,它会更新数据库但完成 Activity 。当我第二次调用该方法时,它会进入无限循环。

public void savePractice(){
//This Method saves the Practice in the Database under the Athlete practices
currentAthleteRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
currentAthlete = dataSnapshot.getValue(Athlete.class);
if (currentAthlete.practices == null){
currentAthlete.practices = new ArrayList<Practice>();
currentAthlete.practices.add(practice);
}
else {
currentAthlete.practices.add(practice);
}
currentAthleteRef.child("Practices").setValue(currentAthlete.practices);
finish();
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
showProgress("Failed to find Athlete please tell us!!!!!!");
}
});
}

最佳答案

我的快速猜测是您只想读取数据一次并更新它。但这不是您的代码所做的:addValueEventListener 添加一个半永久监听​​器,它会一直积极监听数据,直到您将其删除。

如果您只想读取该值一次,然后停止监听更改,您应该使用:

currentAthleteRef.addListenerForSingleValueEvent(...

总体而言:如果新值取决于同一数据库位置中的当前值,则应该 use a transaction以防止并发更新相互覆盖。

关于java - 尝试更新数据库addValueEventListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61131340/

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