Google 致力于为黑人社区推动种族平等。查看具体举措

数据备份概览

用户通常会投入大量时间和精力在您的应用中创建身份、添加数据以及自定义设置和偏好设置。在用户升级到新设备或重新安装您的应用时,为他们保留这些数据和个性化设置是确保出色用户体验的重要环节。本页介绍了您应备份哪些数据以及可用的备份选项。

选择要备份的数据

设备上的身份和帐号数据、设置数据以及应用数据。

图 1. 确保为回访用户恢复身份信息、应用数据和设置数据。

用户在使用您的应用时会生成大量的数据,因此您应备份相应的数据。如果仅备份部分数据,那么用户在新设备上打开您的应用时会发现缺失内容并感到沮丧。要为用户备份的重要数据包括身份数据、用户生成的应用数据以及设置数据,如下所述。

身份数据

当用户开始使用新设备时,您可以通过转移他们的帐号维持现有的用户互动度。

首先,您应该采用 Google 登录,这样用户就可以自动登录或点按一下新设备登录。

您还可以集成 Smart Lock(密码专用),它可以在设备上立即恢复登录状态。Smart Lock(密码专用)支持保存用户名-密码凭据(例如密码)以及联合身份提供商凭据。在搭载 Android 8.0 及更高版本的设备上,用户还可以通过自动填充框架保存密码。

您还可以使用 Account Transfer API,将应用的自定义帐号凭据从用户的现有设备复制到新的设备。这种转移是在设置新设备期间,通过加密的蓝牙连接或设备到设备线缆完成的。

应用数据

应用数据可能包含用户生成的内容,例如文字、图片和其他媒体。如需了解如何恢复应用数据,请参阅使用同步适配器转移数据Google Drive Android API。您可以使用任意一种方法在搭载 Android 的设备之间同步应用数据,并保存您希望在常规应用生命周期内使用的数据。您还可以使用任意一种方法在新设备上恢复回访用户的数据。

设置数据

务必备份并恢复设置数据,以在新设备上保留回访用户的个性化偏好设置。即使用户没有登录您的应用,您也可以恢复设置数据。您可以备份用户在应用界面中明确设置的设置以及透明数据(例如,表明用户是否已看到设置向导的标记)。

注意:在搭载 Android 7.0(API 24)或更高版本的设备上,系统会自动备份和恢复用户向您的应用授予的所有权限。不过,如果用户卸载了您的应用,则系统会清除所有授予的权限,并且用户必须重新授予这些权限。

为了在新设备上尽可能保留现有用户的体验,请务必备份以下用户设置:

  • 用户修改的任何设置,例如使用 AndroidX Preference Library 时。
  • 用户是否已开启或关闭通知和铃声。
  • 表明用户是否已看到欢迎屏幕或介绍性提示的布尔值标记。

将设置从一台移动设备转移到另一台移动设备。

图 2. 在新设备上恢复设置可确保出色的用户体验。

应避免备份的一种设置数据是 URI,因为它们可能不稳定。在某些情况下,在新的移动设备上恢复数据可能会导致产生没有指向有效文件的无效 URI。例如,使用 URI 保存用户的铃声偏好设置。当用户重新安装应用时,该 URI 可能代表无铃声或者与预期不同的铃声。您可以备份一些有关该设置的元数据(例如,铃声标题或铃声的哈希值),而不是备份 URI。

备份选项

Android 为应用提供了两种将数据备份到云端的方式:应用自动备份键值对备份。Android 6.0(API 级别 23)及之后的版本提供自动备份功能,该功能通过将数据上传到用户的 Google 云端硬盘帐号来保留数据。自动备份功能会备份系统分配给应用的大多数目录中的文件。自动备份功能可为每个应用最多存储 25MB 的文件数据。键值对备份功能(以前称为 Backup API 和 Android Backup Service)通过将设置数据上传到 Android Backup Service,以键值对的形式保留这些数据。

通常,我们推荐使用自动备份功能,因为该功能默认启用,且无需任何操作就可实现。以 Android 6.0(API 级别 23)或更高版本为目标平台的应用会自动启用自动备份功能。自动备份功能是一种基于文件的应用数据备份方法。尽管自动备份易于实现,但如果您有更具体的数据备份需求,则可以考虑使用键值对备份功能。

注意:如果您的应用没有针对应用内容的备份机制,并且应用内容的大小不太可能超过 25MB 的限制,则自动备份可能足以满足您的需求。

下表说明了键值对备份和自动备份之间的一些主要区别:

类别 键值对备份 (Android Backup Service) Android 自动备份
支持的版本 Android 2.2(API 级别 8)及更高版本。 Android 6.0(API 级别 23)及更高版本。
启用方式 默认处于停用状态。应用可以通过声明备份代理来选择启用该备份功能。 默认处于启用状态。应用可以通过停用备份来选择停用该备份功能。
实现 应用必须实现 BackupAgent。备份代理会定义要备份哪些数据以及如何恢复数据。 默认情况下,自动备份会涵盖应用的几乎所有文件。您可以使用 XML 包含和排除文件。归根结底,自动备份依赖于捆绑到 SDK 的备份代理。
频率 当有数据准备好进行备份时,应用必须发出请求。系统会以每隔几小时一次的频率批量处理和执行多个应用的请求。 大约每天自动备份一次。
传输 备份数据可通过 WLAN 或移动数据网络传输。 备份数据默认通过 WLAN 传输,但设备用户可以启用移动数据备份。如果设备未曾连接到 WLAN 网络,或者用户未更改移动数据备份设置,则绝不会自动备份。
传输条件 onBackup()定义备份所需的设备条件 在 XML 文件中定义备份所需的设备条件(如果使用默认备份代理)。
应用关闭情况 备份期间不会关闭应用。 系统会在备份期间关闭应用。
备份存储空间 备份数据存储在 Android Backup Service 中,每个应用的备份数据上限为 5MB。Google 会根据 Google 的隐私权政策将这些数据视为个人信息。 备份数据存储在用户的 Google 云端硬盘中,每个应用的备份数据上限为 25MB。Google 会根据 Google 的隐私权政策将这些数据视为个人信息。
用户登录 无需用户登录应用。用户必须使用 Google 帐号登录设备。 无需用户登录应用。用户必须使用 Google 帐号登录设备。
API 相关的 API 方法基于实体: 相关的 API 方法基于文件:
数据恢复 数据会在应用安装后恢复。如果需要,您可以请求手动恢复。 数据会在应用安装后恢复。如果有多个数据集,用户可以从备份数据集列表中进行选择。
文档 使用 Android Backup Service 备份键值对 通过自动备份功能备份用户数据

如需详细了解如何针对每种服务进行备份和恢复,请参阅测试备份和恢复

注意:如果 WLAN 不可用,则键值对备份可能会使用移动数据。因此,键值对备份通常不适用于应用数据内容(例如,媒体、下载的文件和缓存),除非数据量非常小。

其他资源

如需详细了解数据备份,请参阅以下资源。

Codelab