Tech記事

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);としてやるとうまく取得できるようになる。

ABOUT ME
Arata Furukawa
DMM.com LLCでAIエンジニアをしてます。 このブログでは、ITに関する記事や、セミナーの開催、執筆、登壇の告知などをまとめています。アイコンは自作。