我已經設置了Android備份服務使用擴展BackupAgentHelper定製類我的應用程序......它基本上是這樣的:BackupAgent子還原,但沒有手動恢復
public class MyBackups extends BackupAgentHelper {
@Override
public void onCreate() {
Log.d("MyBackups", "creating backup class");
this.addDefaultHelper();
String defaultSharedPrefsName = this.getPackageName() + "_preferences";
SharedPreferencesBackupHelper defaultPrefsHelper = new SharedPreferencesBackupHelper(this, defaultSharedPrefsName);
this.addHelper("default_prefs", defaultPrefsHelper);
}
@Override
public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) throws IOException {
Log.d("MyBackups", "backing up " + data);
super.onBackup(oldState, data, newState);
}
@Override
public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) throws IOException {
Log.d("MyBackups", "restoring");
super.onRestore(data, appVersionCode, newState);
// post-processing code goes here
}
}
我有這是在清單文件中註冊的,如果我刪除並重新安裝應用程序,它會按預期運行,並顯示所有日誌消息。
但是,如果我手動申請恢復,像這樣...
BackupManager backupManager = new BackupManager(getApplicationContext());
int error = backupManager.requestRestore(
new RestoreObserver() {
public void restoreStarting(int numPackages) {
Log.d("MyBackups", "restoreStarting");
}
public void restoreFinished(int error) {
Log.d("MyBackups", "restoreFinished");
}
public void onUpdate(int nowBeingRestored, String currentPackage) {
Log.d("MyBackups", "onUpdate");
}
}
);
Log.d("MyBackups", "requestRestore result: " + error);
... restoreStarting和restoreFinished被稱爲,並且錯誤的結果是0,但沒有的BackupAgentHelper方法被調用 - - 「創建備份類」和「恢復」日誌不會出現,並且我的後處理代碼不會運行。看起來好像一個手動requestRestore繞過我的自定義BackupAgentHelper子類。
還有什麼我需要連接到進行手動恢復工作,以同樣的方式作爲自動恢復?你有沒有試過,它是爲你工作?
順便說一句,我不認爲這是http://stackoverflow.com/questions/8928669/onrestore-not-invoked-for-my-custom-backupagent重複的問題,因爲在我的情況下,自動恢復時重新安裝應用程序可以正常工作,並且只有使用requestRestore進行手動還原時出現問題。 – arlomedia