Просмотр локальной базы данных с помощью Stheto на Android
В настоящее время я создаю приложение для Android, которое использует базу данных Firebases в реальном времени в качестве бэкэнда. Я заметил, что получение дочерних узлов в первый раз занимает больше времени, поэтому я предполагаю, что Firebase использует локальную базу данных. Однако локальные файлы, по-видимому, будут удалены, если приложение будет убито (даже с включенным сохранением).
Я хотел проверить локальную базу данных с помощью Stetho, но не могу найти данные в локальных базах данных, отображаемых в инструментах разработчика chromes.
Есть ли способ посмотреть, как выглядит локальная база данных? И есть ли возможность сохранить данные, даже если приложение убито?
1 ответ
tl;dr: вы, вероятно, не включили сохранение диска.
Что происходит при первом чтении из базы данных
Когда ваше приложение впервые подключается к Firebase, это происходит:
При первом получении данных Firebase устанавливает соединение между клиентом и сервером. Время, которое требуется, зависит от пути между клиентом и сервером, но обычно составляет несколько секунд.
Если вы используете аутентификацию, то это первоначальное "рукопожатие" также включает в себя вход пользователя или обновление его токена.
Затем Firebase извлекает данные, которые вы запросили. Время, которое это занимает, в основном зависит от объема запрашиваемых данных и пропускной способности клиентского устройства.
Если эти шаги, шаг 3 часто занимает наименьшее количество времени. Тем не менее, когда вы запрашиваете дополнительные данные, клиент Firebase должен выполнить только шаг 3, поскольку он поддерживает свое соединение и состояние аутентификации между вызовами.
Где Firebase кеширует данные
По умолчанию Firebase хранит данные, которые вы активно слушаете, в памяти. Если вы подключите второго прослушивателя для тех же данных, этот получатель получит копию данных из памяти. Таким образом, в этом случае чтение происходит мгновенно, поскольку даже шаг 3 ранее не требуется.
Когда вы отсоединяете всех слушателей для определенного фрагмента данных, Firebase немедленно удалит его из памяти. Таким образом, это означает, что в следующий раз, когда вы присоедините слушателя, ему придется перечитать данные (шаг 3 сверху).
Если вы включите постоянство диска, клиент Firebase также будет хранить копию любых данных, которые он получает на диск. Это так называемый MRU-кеш, поэтому он содержит только последние данные и сохраняется между перезапусками вашего приложения. Но это происходит только если вы включили постоянство.
Где живет локальный дисковый кеш
Кэш локального диска - это обычная база данных sqlite. Если вы заинтересованы в поиске его в целях отладки, он (по крайней мере для меня) живет в /data/data/{applicationId}/{applicationId}_default
, Это база данных sqlite. Но формат не задокументирован, так что вы сами разберетесь в нем.
Также см: