BackupAgentHelper вызывает потерю данных
В настоящее время у меня есть 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 сможет сделать резервную копию.
Любые предложения будут наиболее полезны - я бы предпочел, чтобы пользователи не потеряли все свои данные.
1 ответ
Вы не получаете никаких действий по восстановлению, когда ваше приложение обновляется на месте. Единственный раз, когда вы увидите, что восстановление происходит при нормальном использовании, это когда ваше приложение установлено из чистого состояния (либо первая установка на этом устройстве, либо после того, как пользователь полностью удалил приложение, а затем переустановил его).).
Некоторые поставщики устройств Android внесли изменения в способ обработки SharedPreferences; Интересно, сталкивались ли затронутые пользователи с какой-то редкой ошибкой, связанной с этим.