2015-11-24 3 views
1

Я использую службу резервного копирования Android в своем текущем приложении. Я прочитал на docs чтоЗадержка службы резервного копирования Android

запрос на резервное копирование не приводит к немедленному вызову вашего метода onBackup(). Вместо этого Backup Manager ждет подходящее время, а затем выполняет резервное копирование для всех приложений, которые запросили резервное копирование с момента последней резервной копии.

Кто-нибудь знает примерно, сколько времени потребуется от запроса dataChanged() на фактическую операцию резервного копирования?

Или, может быть, было бы неплохо отказаться от службы резервного копирования Android в целом и выбрать другое хранилище?

С уважением!

+0

Резервное копирование Android не является подходящим инструментом для синхронизации ваших данных. Насколько я знаю, резервное копирование данных происходит один раз в день и только в некоторых предопределенных обстоятельствах, таких как «на Wi-Fi», «батарея заряжается» и другие. –

+0

Я не знаю, что это точно, это был ответ GDE на конференции. –

+0

Спасибо за ответ. Тогда для чего это подходит? Название предполагает, что я могу использовать его для хранения, например. пользовательские настройки там, и когда пользователь переустанавливает данные или стирает приложение, он должен восстановить их в предыдущее состояние. Но в случае, как вы описали, это не выглядит так, как если бы я мог использовать его для этой цели. – Noiseapps

ответ

0

Точное время от вызова dataChanged() до фактических данных, передаваемых на бэкэнд резервного хранилища, будет зависеть от нескольких факторов: подключение, в основном. Версия Android, на которой работает устройство, тоже имеет значение; за эти годы политика задержек была изменена. Причина в том, что отсрочка вообще заключается в том, чтобы избежать чрезмерного использования большого количества данных, используя ежемесячную квоту данных о людях, сохраняя при этом бэкэнд, по крайней мере, в основном обновляясь, чтобы вы не теряли тонны если вы случайно потеряете телефон в реке или что-то в этом роде. Обычно латентность составляет до часа, хотя с Android M она довольно длинная (более 4 часов). Для тестирования вы всегда можете выполнить немедленную резервную передачу с этой ADB команды:

adb shell bmgr run 

Вы также можете имитировать призывающую dataChanged вашего приложения() первым с другим вызовом инструмента bmgr оболочки:

adb shell bmgr backup com.myapps.packagename 

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

Вы не говорите, какой путь данных приложение использует - полные данные (новые в Android M) или ключ/значение (введено в Android Froyo). dataChanged() применим только для более старого API ключа/значения.

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

+0

Спасибо за ответ. Оцените подробное объяснение :) Я хотел, чтобы он хранил данные пользователя через переустановки/очистку данных, но задержка была слишком длинной для моего варианта использования. Но это был хороший опыт, хотя :) – Noiseapps

+0

Вы не можете хранить данные через операцию «четких данных» с помощью этого механизма. Когда пользователь очищает данные в приложении, система резервного копирования будет затем резервировать новое состояние, то есть состояние без каких-либо данных. Он * будет обрабатывать случай удаления/переустановки, но не на короткое время: если пользователь удалит приложение в течение нескольких часов (или дня), данные не обязательно будут скопированы - но в этом случае , пользователь в основном сказал, что они не заинтересованы в приложении в первую очередь. – ctate

+0

О, хорошо это знать. Спасибо :-) Я думал, что если пользователь очистит данные на телефоне, он будет восстановлен позже. – Noiseapps

Смежные вопросы