Как отключить автономное сохранение в базе данных Firestore на Android

Я хочу отключить автономное сохранение Firestore в Android с помощью Kotlin. Если устройство находится в автономном режиме, локального кеша для дальнейшей автоматической синхронизации данных не будет.

Я попытался отключить автономное сохранение Firestore, используя:


val firestoreSettings = FirebaseFirestoreSettings.Builder()
    .setPersistenceEnabled(false) // Disable offline persistence
    .build()

val db = FirebaseFirestore.getInstance()
db.firestoreSettings = firestoreSettings

Но setPersistenceEnabled устарел.

Затем попробовал использовать:

val firebaseSettings = firestoreSettings {
    setLocalCacheSettings(
        memoryCacheSettings {  }
    )
}

val db = FirebaseFirestore.getInstance()
db.firestoreSettings = firebaseSettings

Но он по-прежнему использует автономное сохранение.


50
1

Ответ:

Решено

Действительно FirebaseFirestoreSettings.Builder#setPersistenceEnabled(value: Boolean) устарел. Как вы уже видели в официальной документации, посвященной автономному сохранению в Firestore, решение для включения автономного сохранения:

val settings = firestoreSettings {
    // Use memory cache
    setLocalCacheSettings(memoryCacheSettings {})
}
db.firestoreSettings = settings

Это означает, что если вы используете приведенные выше строки кода, вы будете использовать кеш памяти, а не кеш диска.

Судя по вашему последнему комментарию:

Он по-прежнему использует автономное сохранение

Я не могу сказать вам, почему вы все еще читаете данные из локального кэша, не видя, как вы на самом деле читаете данные. Однако, если вы хотите читать данные не из кеша, а только с серверов Firebase, я рекомендую вам указать источник запроса с помощью Query#get(source: Source), который:

Пытается предоставить актуальные данные, когда это возможно, ожидая данных с сервера, но может вернуть кэшированные данные или потерпеть неудачу, если вы находитесь в автономном режиме и сервер недоступен.