如何处理具有TimeStamp

时间:2016-11-24 15:51:40

标签: android firebase firebase-realtime-database

使用Firebase ChildEventListener时,我按这样推动:

 UserHistoryMap.put(UserHistory.TIME, ServerValue.TIMESTAMP);

onChildAdded被调用时,TimeStamp出错,而对onChildChanged的后续调用将具有正确的TimeStamp。我理解为什么因为这个answer,但我应该在onChildAddedonChildChanged中添加相同的代码:

@Override
public void onChildAdded(DataSnapshot snapshot, String prevKey) {
    UserHistory addressHistory = snapshot.getValue(UserHistory.class);
        HistoryManager.getInstance().addHistory(
                mFireBaseAuth.getCurrentUser().getUid(),
                addressHistory.getAddressId(),
                addressHistory.getTime());
        MyLog.i(TAG, "TESTING onChildAdded for " + " time "+ addressHistory.getTime());
}

@Override
public void onChildChanged(DataSnapshot snapshot, String prevKey) {
    UserHistory addressHistory = snapshot.getValue(UserHistory.class);
        HistoryManager.getInstance().addHistory(
                mFireBaseAuth.getCurrentUser().getUid(),
                addressHistory.getAddressId(),
                addressHistory.getTime());
        MyLog.i(TAG, "TESTING onChildChanged for " + " time "+ addressHistory.getTime());
}

这有效,但我觉得必须有更好的方法,因为根据我上面的代码,我实际上保存了错误的TimeStamp

我在文档中看不到有关此问题的任何解决方法,但可能在我错过的一些Google I / O会话中,但无论如何都希望得到一些意见。

当然,对于ValueEventListener也会发生这种情况但是很明显如何处理它,因为它只有一个onDataChange

0 个答案:

没有答案