firestore сохранение данных локально

190
13 октября 2018, 15:00

Мне нужно что бы приложение читало только новые данные, а остальные(ранее скачанные) хранило оффлайн и не скачивало заново.

Из этого поста я понял что для этого нужно использовать SnapshotListener вместо get. И да я проверил, get если есть подключение к сети качает данные с сервера, а SnapshotListener берет оффлайн, но не всегда. Я не могу понять причин, но иногда данные берутся с сервера(на сервере данные не изменялись). В некоторых активностях данные всегда берутся с сервера, а в некоторых при запуске приложения - данные берутся локально, но при перезапуске активности они уже берутся с сервера.

Также я попробовал поставить два абсолютно одинаковых запроса рядом, то есть если один загрузится онлайн, то второй должен по логике брать уже локально, но нет, оба берутся с сервера.

Код

   FirebaseFirestore db = FirebaseFirestore.getInstance();
   db.collection("collection")
  .whereEqualTo("language", Locale.getDefault().getLanguage());
       .addSnapshotListener(new EventListener<QuerySnapshot>() {
                    @Override
                    public void onEvent(@Nullable QuerySnapshot value,
                                        @Nullable FirebaseFirestoreException e) {
                        if (e != null) {
                            Log.w(TAG, "Listen failed.", e);
                            return;
                        }
                        if(value != null && !value.isEmpty()){
                          // some code.
                        }
                        String source = value.getMetadata().isFromCache()? "local cache" : "server";
                        Log.d("DATAFROM", source);//тут можно понять откуда данные.
                    }
                });

PS: без whereEqualTo тоже не работает.

Что интересно, если отключить интернет, то все данные есть оффлайн и нормально загружаются...

Зачем это исправлять- потому что оплата берется за чтение, и какой смысл читать и платить за уже прочитанные данные!!?

Как это исправить?

READ ALSO
Не работает загрузка коллекций в DTO Hibernate

Не работает загрузка коллекций в DTO Hibernate

Есть Entity с 4-мя @OneToMany отношениями:

209
CSRF Spring security через ajax(json)

CSRF Spring security через ajax(json)

у меня проблема с csrf и SpringSecurityКогда я посылаю форму я получаю статус 302

208
Как перевести Spring XML конфиг в Java конфиг?

Как перевести Spring XML конфиг в Java конфиг?

Есть такой бин, в xml конфиге

194
Мавен не создает property

Мавен не создает property

В файле pomxml есть такая конструкция

194