LoginSignup
9
7

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-10-03

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

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として渡される場合がある。複数回コールバックを受け取るなら問題はないが、addListenerForSingleValueEventでもキャッシュが返されるので困る。

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


Firebase Tips - or NEW

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7