ORNEW

Firebase Tips

Facebook にシェア
Pocket

Firebase

自分がハマったところをまとめていく。随時追記。

一度だけデータを取得したいのにキャッシュを返される

DatabaseReference ref = database.getReference().child("data");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // 最新データが取得できるとおもいきや…
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
    });

database.setPersistenceEnabled(true);としているとFirebaseはローカルにデータをキャッシュをする場合があり(場合があるというのは、キャッシュは消される可能性もあるため)、その時そのキャッシュがonDataChangeとして渡される場合がある。

取得したリファレンスに対してref.keepSynced(false);としてやるとうまく取得できるようになる。