不建议使用BackupManager requestRestore(),还有什么选择?

时间:2018-12-17 15:22:31

标签: java android sharedpreferences backupmanager

有人知道我现在可以使用什么来通过BackupManager请求在Android上同步数据吗?

文档指出该方法现在已被弃用,但未提供该方法的等效/替换调用。我知道,同步是在应用程序首次安装时执行的,但这似乎是吗?

我希望使用SharedPreferences和BackupManager在连接到用户帐户的设备之间同步数据的键/值对。

1 个答案:

答案 0 :(得分:0)

    BackupManager backupManager = (BackupManager) getSystemService(BACKUP_SERVICE);
    RestoreSession restoreSession = backupManager.beginRestoreSession();
    if (0 != restoreSession.getAvailableRestoreSets(new android.app.backup.RestoreObserver() {
        @Override
        public void restoreSetsAvailable(RestoreSet[] result) {
            if (result != null && result.length > 0) {
                if (0 != restoreSession.restoreAll(result[0].token, new android.app.backup.RestoreObserver() {
                    @Override
                    public void restoreFinished(int error) {
                        Log.d(TAG, "succeed to restoreAll");
                    }
                })) {
                    Log.d(TAG, "fail to restoreAll");
                    restoreSession.endRestoreSession();
                }
            } else {
                Log.d(TAG, "restore database is empty");
                restoreSession.endRestoreSession();
            }
        }
    })) {
        Log.d(TAG, "fail to getAvailableRestoreSets");
        restoreSession.endRestoreSession();
    }