При разработке приложения для Android, предназначенного для всех версий выше 4.1, я заметил, что удаление моего приложения и его повторная установка не очищает его данные.
Приложение предназначено для хранения деталей, которые оно запрашивает на первом экране. После удаления и повторной установки в ОС версии 4.4.4, приложение предлагает пользователю заполнить данные, что является нормальным. Однако в версии 6.0 та же последовательность установки / удаления возвращает исходные данные.
Я попытался убедиться, посетив, /data/data/my package folder
чтобы увидеть, что база данных исчезла после удаления, и действительно, эта папка удаляется во время удаления.
Я попытался удалить приложение, посетив страницу настроек через Titanium Backup и результаты такие же. На устройстве рутирован Nexus 5 под управлением v6.0.
В чем может быть причина этого странного поведения?
источник
Ответ greywolf82 правильный, но я хочу добавить к этому некоторую информацию.
При разработке моего приложения для Android (с использованием Xamarin) я заметил, что всякий раз, когда я перезапускаю приложение из Visual Studio, мои данные возвращаются к данным, полученным несколько месяцев назад. Не имело значения, если я просто остановился и перезапустил его из VS, или я полностью удалил приложение и переустановил его.
Стоит также отметить, что мы никогда не указывали приложению явно сохранять резервную копию.
Резервное копирование также, по-видимому, перезаписывает новые данные при запуске из Visual Studio, и у нас есть отчеты о пользователях, использующих сборку релиза нашего приложения, а также получающих новые данные, перезаписываемые резервными копиями.
Поскольку я не знаю точно, когда происходят резервные копии и восстановление, эта функция, кажется, вызывает только проблемы.
Мы изменили наш AndroidManifest, как показано в следующем XML:
Как только мы явно установим значение в false, все будет работать. Я ожидал бы, что это будет опция отказа, но ... кажется, что она может быть включена по умолчанию для приложений, которые в любом случае не указывают значение.
источник
Вы должны проверить параметры резервного копирования и сброса вашего устройства, а также отключить автоматическое восстановление (при переустановке приложения резервные копии настроек и данных будут восстановлены).
Отключение автоматического резервного копирования отличается от автоматического восстановления. Если вы считаете, что для вашего приложения будет полезно включить автоматическое резервное копирование, сделайте это. Но если вы думаете, что это заставит конечных пользователей, которые не знают, что функция автоматического восстановления на их устройстве включена, не стесняйтесь отключить ее.
В моем случае я отключил функцию allowBackup, но, поскольку у меня уже была резервная копия предыдущей версии в облаке, она продолжала восстанавливаться.
Смотрите изображение в качестве ссылки для устройства Samsung на Android 6.0. Другие устройства и версии могут иметь другой экран. Смотрите изображение ниже.
Настройка автоматического восстановления в разделе «Резервное копирование и сброс»
источник
Недавно мне понадобилось воспользоваться этими функциями, я смог раскрыть документацию, и после всестороннего тестирования я смог сделать следующее:
Android: allowbackup - создает резервную копию данных локального приложения на устройстве, на котором оно находится.
Android: fullBackupContent - используется в сочетании с API восстановления резервных копий Google и МОЖЕТ управляться через файл xml для указания того, что именно должно быть сохранено, а также класс BackupManager, который вы можете реализовать для дальнейшего контроля над процессом.
Однако в документации говорится, и я подтвердил тестированием, что восстановление будет происходить только тогда, когда устройство восстанавливается и запускается процесс обработки данных приложения восстановления. ИЛИ также восстановится, когда приложение будет загружено через adb, что мы и делаем, когда запускаем приложение для тестирования или отладки на наших устройствах через Android Studio. Обратите внимание, что если вы установили android: allowbackup, но не настроили android: fullBackupContent с помощью API-кода Google, тогда данные приложений сохраняются только локально, тогда как если вы настроили его правильно, то, если ваше приложение было скопировано, и вы получили новое устройство, приложения данные были сохранены в облаке, чтобы их можно было восстановить на новом устройстве.
источник
Добавление android: allowBackup = "false" под тегом приложения в файле манифеста решило мою проблему.
Вот идет документация Android для резервного копирования пользовательских данных с помощью Auto Backup
источник
Просто измените android: allowBackup = "true" на android: allowBackup = "false" в файле manifiest.xml. Это будет работать.
источник
Просто добавив к этому, мы обнаружили, что в Android 9 (на устройстве HMD Nokia) активы удерживались даже после удаления приложения через интерфейс и через adb.
Ответ добавления:
android:allowBackup="false" android:fullBackupOnly="false"
Очевидно, это не новый ответ - это наблюдение для людей, которые были в том же положении, что и мы.
источник
Если вы нацелены на Android 10, то вы должны поместить
android:hasFragileUserData="true"
в тег приложенияAndroidManifest.xml
См. Https://commonsware.com/blog/2019/06/06/random-musings-q-beta-4.html.
источник