我目前已实施 BackupAgentHelper 来备份 SharedPreferences。但是,有时当我发布更新时,我会收到来自用户的消息,说更新导致其 SharedPreferences 中的数据被完全擦除。经过调查,可能导致它的唯一原因是 BackupAgentHelper,尽管实现相当标准,所以我不完全确定为什么会这样。
public class CloudBackup extends BackupAgentHelper {
static final String MY_PREFS_BACKUP_KEY = "ACNLPrefs";
@Override
public void onCreate() {
SharedPreferencesBackupHelper helper =
new SharedPreferencesBackupHelper(this, "ACNLCaught",
"ACNLVersion",
"ACNLSort");
addHelper(MY_PREFS_BACKUP_KEY, helper);
}
}
由于它在更新后立即发生(这也不是 1 个特定更新,每次更新后似乎都会发生在极少数用户身上),我只能假设它与 SharedPreferences 何时恢复有关。如果用户安装了应用程序,生成了大量数据,然后很快就收到了更新,我猜可能在 BackupAgent 有机会进行备份之前就已经下载了更新。
任何建议都是最有帮助的——我不希望任何用户丢失他们的所有数据。