我想从 firebase 获取最后的输入数据。但是通过使用 ValueListener 和 onDataChange,我得到的值是最后一个 data-1(最后一个的前一个)。
这是代码:
mDose1.addValueEventListener(new ValueEventListener() {
public void onDataChange(@NonNull DataSnapshot snapshot) {
int iDose = snapshot.getValue(Integer.class);
}
public void onCancelled(@NonNull DatabaseError error) {
}
});
我在内部搜索找不到任何方法来解决这个问题,或者我可能不明白我应该搜索什么。
如果您在 Android 上运行此代码并且启用了缓存,则预计您的
onDataChange
将首先(几乎立即)使用缓存中的值进行调用。
如果设备已连接到服务器并且服务器上的值已更改,您的
onDataChange
将使用服务器中的值再次调用。
如果这不是您得到的行为,请编辑您的问题以显示实际发生的情况(例如通过打印有问题的值)。这也是实施
onCancelled
的好时机,至少应该是:
public void onCancelled(@NonNull DatabaseError error) {
throw error.toException();
}