- PVSM.RU - https://www.pvsm.ru -
В данной статье хочется затронуть такую важную тему для Android разработчика, как облачный бэкап данных на примере использования Android Backup Service. Данный сервис позволяет бесплатно хранить данные приложения на удалённом облачном хранилище. Согласно документации [1] он позволяет восстанавливать данные при переустановке приложения, обновлении девайса и при заводском сбросе настроек. Всё, что требуется от пользователя, это то, чтобы у него стояли галочки в «Резервирование данных» и «Автовосстановление» в Настройки/Восстановление и сброс.
Перед реализацией необходимо зарегистрировать своё приложение непосредственно в Android Backup Service [2]. Ключ полученный при регистрации используется в манифесте, см. ниже.
Самый простой вариант взаимодействия с BackupManager – это наследование от класса BackupAgentHelper.
В данном классе мы используем два хелпера:
public class TheBackupAgent extends BackupAgentHelper {
@Override
public void onCreate() {
// DatabaseHelper.DATABASE_NAME – константа с названием базы данных.
FileBackupHelper fileBackupHelper = new FileBackupHelper(this, "../databases/" + DatabaseHelper.DATABASE_NAME);
addHelper(DatabaseHelper.DATABASE_NAME, fileBackupHelper);
//здесь мы просто, через запятую указываем названия файлов, в которых хранятся ваши настройки. Обратите внимание на последний параметр, в файле под таким названием хранит данные дефолтный PreferenceManager(PreferenceManager.getDefaultSharedPreferences(context))
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, SharedPreferenceHelper.PREFERENCES, getPackageName() + "_preferences");
addHelper("prefs", helper);
}
//метод для запроса бэкапа. Согласно документации следует вызывать этот метод всякий раз, когда данные изменились.
public static void requestBackup(Context context) {
BackupManager bm = new BackupManager(context);
bm.dataChanged();
}
}
Вы удивитесь, но в принципе это всё. Напоследок просто указываем путь к классу бэкап агента в манифесте и дополнительные атрибуты с говорящим названием. Также в meta-data прописывается ключ, полученный при регистрации приложения.
<application
android:name=". MyApplication "
android:allowBackup="true"
android:restoreAnyVersion="true"
android:backupAgent=".util.TheBackupAgent"
<meta-data android:name="com.google.android.backup.api_key"
android:value="AEdPqrEAAAAIDaYEVgU6DJnyJdBmU7KLH3kszDXLv_4DIsEIyQ" />
</application>
Поскольку в Android нет красивого решения определения остановки приложения, предлагаю, как один из ленивых путей, запрашивать бэкап на старте приложения.
public class MyApplication extends Application {
@Override
public void onCreate() {
TheBackupAgent.requestBackup(this);
}
}
Не забываем внимательно смотреть логи. При указании неверных путей к файлам или префам вы будете проинформированы.
Алгоритм достаточно простой:
По личным ощущениям и гуглению данный сервис работает стабильно не на всех девайсах, однако внедрение данного функционала почти не требует усилий и поэтому рекомендуется к использованию в приложениях с базой данной или SharedPreferences по умолчанию.
Автор: Andoctorey
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/backup/62434
Ссылки в тексте:
[1] документации : http://developer.android.com/guide/topics/data/backup.html
[2] Android Backup Service: http://developer.android.com/google/backup/signup.html
[3] SharedPreferencesBackupHelper: http://developer.android.com/reference/android/app/backup/SharedPreferencesBackupHelper.html
[4] FileBackupHelper: http://developer.android.com/reference/android/app/backup/FileBackupHelper.html
[5] Источник: http://habrahabr.ru/post/226357/
Нажмите здесь для печати.