29

我将一些应用程序元数据保存在SharedPreferences. 每当我卸载应用程序并重新安装它时,它们都会SharedPreferences被删除。

有没有办法让它保留下来,这样如果用户卸载并重新安装,他们可以恢复他们的旧数据?

4

8 回答 8

24

从 Android 6.0 开始,可以使用:

<application
        android:allowBackup="true">

通过将其设置为 true,您的数据(sharedprefs 和其他数据)将保存在 Google 云上,并在下次安装应用程序时恢复。你可以在这里阅读更多关于它的信息。需要注意的是,从 6.0 开始默认设置为true 。

于 2016-04-07T08:51:31.267 回答
21

您应该添加一个BackupAgentHelper到您的应用程序。与 一起SharedPreferenceBackupHelper,它将 备份SharedPreferences到云端(如果设备支持)。重新安装应用程序后,数据将恢复。

看:

备份代理助手

SharedPreferenceHelper(包含实现它所需的所有代码)

一般备份指南

于 2012-03-22T02:31:34.620 回答
3

我很确定SharedPreferences总是与应用程序一起删除。在我看来,最好的方法是将隐藏文件(类似于“.nameOfFile”)写入 SD 卡或内部存储器,并使其包含首选项。

不过,您应该使用 SharedPreferences,它是偏好管理的 Android 标准。您可以这样做,以便在您的应用程序第一次加载时,它会检查 SDCard 中是否存在上次打开时创建的隐藏文件。如果文件存在,则读入这些输入并将它们存储在 SharedPreferences 中,如果不存在,则要么用户删除了它,要么用户以前从未安装过您的应用程序。

这只是一种方法,它可能不是最有效的,但我希望它有所帮助!

于 2012-03-22T01:51:19.143 回答
2

一种方法是将用户数据存储在服务器上。然后当用户重新安装应用程序或在另一台设备上安装应用程序时,他们可以“同步”他们的用户数据。这只是数据的小型 HTTP 下载,可能存储在 JSON 中,然后您将对其进行解析并写入 SharedPreferences。

如果你不想维护自己的服务器,你可以使用像 Dropbox 这样的云服务。这就是应用程序 1Password Reader 的工作方式。

于 2012-03-22T02:01:43.660 回答
2

正如 edthethird 所说:最好将物理文件放在设备外部存储上并在安装时读取它们。如果需要对用户隐藏文件内容,只需执行简单的加密/解密过程。

于 2012-07-17T09:19:52.447 回答
1

卸载时会删除 sharedPrefs 和 DB。您必须在应用程序之外编写(例如 sd)。

于 2012-03-22T01:55:48.960 回答
1

这实际上是内置的,您只需要实现几个类即可启用它。数据将被备份并链接到用户的谷歌帐户,因此如果他们在新设备上安装应用程序,重新安装等,它将自动恢复。

http://developer.android.com/guide/topics/data/backup.html

于 2012-03-22T02:30:07.093 回答
0

在 2020 年,在我看来,这Shared Storage就是要走的路。

Android 数据和文件存储概述

https://developer.android.com/training/data-storage

文件和文件的共享存储

https://developer.android.com/training/data-storage/shared/documents-files

于 2020-04-03T12:43:21.713 回答