Я хочу отключить автономное сохранение 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
Но он по-прежнему использует автономное сохранение.
Действительно FirebaseFirestoreSettings.Builder#setPersistenceEnabled(value: Boolean) устарел. Как вы уже видели в официальной документации, посвященной автономному сохранению в Firestore, решение для включения автономного сохранения:
val settings = firestoreSettings {
// Use memory cache
setLocalCacheSettings(memoryCacheSettings {})
}
db.firestoreSettings = settings
Это означает, что если вы используете приведенные выше строки кода, вы будете использовать кеш памяти, а не кеш диска.
Судя по вашему последнему комментарию:
Он по-прежнему использует автономное сохранение
Я не могу сказать вам, почему вы все еще читаете данные из локального кэша, не видя, как вы на самом деле читаете данные. Однако, если вы хотите читать данные не из кеша, а только с серверов Firebase, я рекомендую вам указать источник запроса с помощью Query#get(source: Source), который:
Пытается предоставить актуальные данные, когда это возможно, ожидая данных с сервера, но может вернуть кэшированные данные или потерпеть неудачу, если вы находитесь в автономном режиме и сервер недоступен.