Проблема с синхронизацией

Проблема с синхронизацией данных и облачным сервисом не самая частая, но одна из самых неприятных, это точно. В этой записи я перечислю наиболее вероятные проблемы и их способы решения.

Информация, которая синхронизируется:

  • *_db.db — файл базы данныхф
  • preferences.xml — файл с настройками
  • time_last_changes.txt — файл с краткой информацией о данных  — количество записей и дата последних изменений. Из этого файла берется информация для отображения состояния синхронизации.

Проблема №1 — приложение показывает, что в облаке есть записи, а при синхронизации ничего не появляется

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

  • Если вы видите, что в облаке/на устройстве 76 (или около того) записей — знайте, это стандартные записи.
  • Если записей показывается больше, но все равно ничего не синхронизируется — файл с информацией не совпадает с файлом базы данных. Такое может произойти при прерывании синхронизации или случайном проталкивании пустого файла БД в облака (со второго устройства, например).

Следует откатить файл БД до состояния, когда он был с большим количеством записей. Это возможно через web интерфейс облака (Dropbox или Google Drive оба предоставляют такую возможность только через браузер). Тут показан примерный порядок действий на примере Dropbox.

При получении доступа к предыдущей версии файла, вы можете поступить двумя способами:

Откатить в облаке и попробовать синхронизировать в приложении на устройстве заново

Скопировать файл БД на устройство в определенную папку и импортировать через настройки приложения.

Проблема №2 — приложение при запуске и начале синхронизации сразу вылетает

Отключите мобильный интернет и подключение к Wi-Fi. Приложение при запуске перед попыткой синхронизации проверить доступность сети и при ее отсутствии не будет пытаться ничего синхронизировать.

Сразу после открытия приложения, интернет можно включить и перейти в настройки синхронизации и отключить ее (затем залогиниться заново, проверить доступность облачного профиля в общем).

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

Проблема № 3 — приложение при выходе из него и попытке синхронизации данных вылетает.

Следует проверить для начала, а есть ли у приложения разрешения на доступ к памяти (оно же хочет работать с файлами бэкапов).

Если все ок, следует проверить — а можете ли в ручном режиме протолкнуть данные в облако через настройки синхронизации.

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

Проблема №4 — данные не переносятся из устройства через синхронизацию.

Мне, как разработчику и тестировщику в одном флаконе, несколько раз помогал такой порядок действий при настройке облаков с «нуля»:

1. Оба устройства открепить от облачного аккаунта в настройках синхронизации.
2. Удалить в облаке все папки приложения, заодно и из корзины.
3. На устройстве, на котором точно все данные, законнектиться к облачному аккаунту, увидеть, что в облаке пусто.
4. Вытолкнуть все с устройства, гарантированно обождав завершения процесса.
5. На втором устройстве законнектиться, увидеть, что в облаке есть данные, вручную вытянуть.
6. Проверить, что все вытянулось из облака.
7. На обоих устройствах проставить все три галочки настройки синхронизации (не переживайте, при переписи из облака создается дополнительный локальный бэкап).

 

Добавить комментарий