0
ATNRef= FirebaseDatabase.getInstance().getReference("AvailableTokenNumber");
ATNRef.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
if (mutableData.getValue(int.class) == 0){
mutableData.setValue(2);
data.tokenNo = 1;
return Transaction.success(mutableData);
}else {
data.tokenNo=mutableData.getValue(int.class);
mutableData.setValue(data.tokenNo + 1);
return Transaction.success(mutableData);
}
}
每当代码首次运行时,data.tokenNo的值为0. 之后,根据数据库值正确更新。Android Firebase数据库交易
我无法弄清楚在应用程序/代码的每次首次运行时,data.token = 0的值是什么。
这工作。但数据并未实时反映出来。从数据库中检索数据时,最初显示为0.在与UI元素进行某些交互(如按下按钮或继续)后,'0'变为数据库中的实际值。这不仅发生在第一次访问数据库时,而且每次都要检索数据时,如何避免这种情况?实际数据本身如何在第一时间显示? –
我不确定你的意思。当一个事务完成时,数据将被写入,所有客户端应该能够看到它。 –
希望这可以帮助你理解问题。考虑这种情况:(A)数据库中的值:3(B)事务操作(C)中的值显示为:0(错误的数据)(D)我按下了某个按钮或者在应用程序中刷新了页面(F)值更改为:3(正确的数据) –