Я просмотрел документы и пример приложения BackupRestore и написал собственное тестовое приложение, реализующее android:backupAgent
. Я расширил класс BackupAgent
, потому что моей главной заботой является возможность резервного копирования данных из базы данных. Кажется, я даже не могу заставить простое приложение для проверки концепции работать с этой функцией.
Чтобы сделать вещи исключительно простыми, я объявил android:backupAgent
как MyBackupAgent
в манифесте. Затем я создал класс MyBackupAgent.java, расширив BackupAgent
. Затем я создал переопределения для методов onBackup()
и onRestore()
в классе MyBackupAgent
, как в примерах и документах. Я добавил вызов Log.i()
в самое начало каждой функции, чтобы в LogCat можно было определить, когда вызывались функции. Точно так же я установил точки останова на обоих из них. Затем я реализовал свой код для резервного копирования базы данных.
Я создал образ эмулятора с помощью API 2.2w/Google и даже добавил учетную запись gmail в разделе «Учетные записи и синхронизация». Выполнение команд adb для включения bmgr
, резервного копирования приложения, запуска резервного копирования, удаления приложения, переустановки приложения и т. д. Я ни разу не получил сообщение в файле журнала от команды Log.i()
ни в одном из onBackup()
или onRestore()
функции.
Попробовал еще раз на своем Evo 4g с прошивкой 2.2. Тот же результат. Не похоже, чтобы диспетчер резервного копирования вызывал функции onBackup()
и onRestore()
в классе MyBackupAgent
.
Единственное странное сообщение, которое я получаю в своих журналах, - это одно из BackupManagerService
, в котором говорится: «Резервное копирование проходит, но e = true p = false», я полагаю, в ответ на команду ADB для резервного копирования приложения.
Какие-либо предложения? Я ошибаюсь, предполагая, что оператор Log.i()
в функциях onBackup()
и onRestore()
будет отображаться в LogCat?