2017-02-16 11 views
3

У меня есть приложение, которое извлекает некоторые простые данные из базы данных Firebase Realtime, и сделать вещи простыми вот поток, который я хочу иметь.Firebase, как определить, доступны ли кэшированные данные

Если телефон подключен к Интернету:

  • Получить данные из firebase базы данных

Если телефон отсутствует

  • Если есть данные в firebase cache -> получить данные из кеша
    • Если нет ничего в firebase кэша -> данные показывают некоторые стандартные сохраненные локально в приложении

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

+0

Firebase делает это за вас без добавления кода. –

+0

Я считаю, что @ibrcic спрашивает, как приложение может обнаружить, если телефон находится в автономном режиме, что запрашиваемые данные не кэшируются (и показывают в этом случае другие данные по умолчанию) –

+0

Если вы хотите, чтобы локальный кеш, к которому вы можете запросить существование данных, вам придется реализовать это самостоятельно поверх SDK Firebase. –

ответ

0

Firebase делает это за вас.

Приложения Firebase работают, даже если ваше приложение временно теряет сетевое соединение.

Также приложения firebase автоматически обрабатывают временные сетевые прерывания. Данные кэширования доступны в автономном режиме, а Firebase отправляет любые записи при восстановлении сетевого подключения.

Если этого не достаточно, и вы должны работать в автономном режиме вы можете включить сохранение диска просто добавив:

FirebaseDatabase.getInstance().setPersistenceEnabled(true); 

Больше информации here.

EDIT:
Невозможно узнать, исходит ли значение из локального кеша или удаленного сервера.

Существует только способ узнать, подключено ли ваше приложение к серверу базы данных Firebase.
Для его достижения вы можете найти detect the connection state, прослушив значение .info/connected.

+0

Спасибо за ваш комментарий, но, к сожалению, это не совсем то, что я ищу. Я знаю, что firebase обрабатывает все эти вещи автоматически, и я решил это сделать без проблем. Я не знаю, как определить, есть ли фактические данные в кэше.Например, если пользователь запускает приложение в первый раз и не имеет подключения к Интернету. В этом случае я хочу показать некоторые данные по умолчанию, а не данные из Firebase (поскольку обратный вызов Firebase никогда не запускается). Также, если пользователь очищает кешированные данные от приложения и т. Д. – ibrcic

+0

@ibrcic Я понимаю, но вы используете firebase неправильным способом, на мой взгляд. Это база данных в реальном времени, это не база данных sqlite, и вы должны следовать подходу firebase. неважно, были ли данные показаны из кеша или с сервера, вы показываете в любом случае данные из firebase, и если в первый раз вы хотите показать что-то другое, вы можете это сделать, просто не указав данные firebase. Вы ищете нечто, чего не существует. –

+0

Проще говоря, данные о firebase являются самыми последними, и данные по умолчанию в приложении - это то, что я там поставил при программировании приложения. Я хочу убедиться, что вы показываете данные по умолчанию только тогда, когда нет подключения к Интернету, и нет кэшированных данных. Я думаю, что это то, что вы должны уметь делать, проверьте, есть ли фактические данные в кэше, чтобы я мог отображать что-то, если этого не происходит. – ibrcic