APP数据备份

article/2025/9/25 17:32:27

APP数据备份

Android API 8供了备份和恢复应用程序数据的功能,用户可通过adb backup进行备份,备份文件存放在电脑上自定义位置,再通过adb restore来进行对应用数据的恢复。这种恢复不受限于手机,可将手机A上的备份数据,在装有相同APP的手机B上进行恢复。
Android支持两类数据备份:
- SharedPreferences文件:通过 SharedPreferencesBackupHelper备份
- 其他文件: 通过FileBackupHelper 备份,需要注意的是,一般备份小的配置文件。

一、演示思路
编写一个简单的登陆页面,只包含账号、密码输入框,及登陆按钮。
这里写图片描述

页面启动时,从SharedPreferences查询账号密码,显示到页面,点击“ENTER”按钮时,向SharedPreferences存入新的账号密码。

演示步骤:
1、点击“ENTER”按钮后,将账号密码存入SharedPreferences。
2、备份数据
3、清除APP数据
4、重启APP,看数据是否被清除
5、还原数据
6、重启APP,看数据是否被恢复

二、代码
数据备份不需要权限声明。默认情况下,是允许数据备份的。
如果要禁用备份功能,需要在application标签下声明:

android:allowBackup="false"

再看看activity的代码:

/*** 测试android:allowBackup数据备份。* 备份:adb backup -f allowBackup.ab -noapk com.example.mytestpro* 恢复:adb restore allowBackup.ab */
public class MainActivity extends Activity implements OnClickListener{public static final String NAME = "NAME";public static final String PWD = "PWD";public static final String SP_NAME = "TEST_SP";private EditText et_name;private EditText et_pwd;private Button btn_enter;private SharedPreferences sp;private Editor editor;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sp = getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);editor = sp.edit();initView();}private void initView() {et_name = (EditText) findViewById(R.id.et_name);et_pwd = (EditText) findViewById(R.id.et_pwd);btn_enter = (Button) findViewById(R.id.btn_enter);btn_enter.setOnClickListener(this);if (sp != null) {et_name.setText(sp.getString(NAME, ""));et_pwd.setText(sp.getString(PWD, ""));}}@Overridepublic void onClick(View v) {editor.putString(NAME, et_name.getText().toString());editor.putString(PWD, et_pwd.getText().toString());editor.commit();Toast.makeText(this, "Enter an activity...", Toast.LENGTH_SHORT).show();}
}

布局文件非常简单,此处不在给出。

三、测试操作
1、准备
安装app,并输入账号密码,点“ENTER”出现上面展示的页面。

2、备份
执行备份命令:
这里写图片描述
此时Android会弹出提示窗口:
这里写图片描述

密码可以为空,即不加密。点击备份,等待备份完成。我的备份文件allowBack.ab放在PC默认用户路径下。
这里写图片描述

3、清空APP数据
清空APP的数据,重新进入页面会看到记录的账号密码都丢失了:
这里写图片描述

4、还原APP数据
使用备份的文件allowBack.ab,恢复APP数据:
这里写图片描述
此时Android系统也会弹出恢复提示:
这里写图片描述
如果备份时没有输入密码,此处也可以不输入。
点击恢复后,APP需要重启,重启之后就会看到本文第一张图的页面(此处不再贴图),证明数据恢复成功。

注意:
· 如果在系统弹出的备份或恢复页面等待太久,可能出现备份或恢复失败(可能是我测试机的问题)。
· 在android:allowBackup=”false”时,备份依然能成功,但是恢复必定失败。

以上就是简单的APP数据备份及还原操作。
Android还提供了定义备份还原的API,我们可以自定义这个操作过程及操作范围。

四、自定义备份
可以通过使用BackupAgentHelper类来定义APP数据备份,如名,这是一个备份的代理帮助类。要使用这个代理,需要在AndroidManifest.xml中注册。
详细可以参考这篇博客


http://chatgpt.dhexx.cn/article/rpI6M1MI.shtml

相关文章

华为手机助手备份资料到电脑方法

来源:智能手机网华为手机助手备份前的准备工作: 1、建议使用原装数据线,并确保数据线连接稳定,如果数据线与手机或者电脑接口松动,可能导致备份失败。 2、通过手机助手备份到电脑时,会调用手机上的备份AP…

3种iPhone手机数据备份,轻松备份和恢复数据

新买的iPhone,如何将老款iPhone里的资料恢复到新iPhone? 也有一些小伙伴提出万一苹果手机突然坏了,该如何恢复资料? 防患于未然,因而资料备份显得尤为重要。 谈及备份,首先要了解iOS 备份资料恢复机制 …

如何用iMazing软件将苹果手机数据备份及功能详解

如今手机俨然成为沟通交流的重要工具,里面存储了很多重要信息。但是如果不及时将数据备份,一旦丢失手机或损坏数据,后果将非常严重。苹果手机的数据备份是件非常复杂的事,但是有了iMazing软件之后则不一样了,今天就一起…

安卓手机数据备份与恢复方法汇总和操作详解

每次使用电脑时,我们都会自觉的将重要的文件保存好并且备份起来防止丢失。那同样的,我们在使用手机时,也要养成手机备份的好习惯。 今天小编就来分享几个备份手机数据的方法,希望能帮到大家。 一、手机系统备份与恢复 如今的安卓手机都会设有「备份」功能,通过手机系统备…

数据丢失不用怕 iPhone手机数据备份方法分享

现如今,手机已经成为我们生活中不可缺少的一部分,使用手机的人群无非两种,安卓手机和苹果手机。但根据我多年在论坛瞎逛发现,大多人其实买了苹果手机后,并不会使用苹果自带的两种备份工具“iCloud”和“iTunes”。 今…

Itunes如何备份手机里所有数据操作教学

Itunes如何备份手机里所有数据操作教学。Itunes这个软件可以帮助苹果手机进行数据备份,帮助你保护数据安全,避免数据的丢失。很多用户没有操作过这个软件不知道怎么去进行数据备份的方法,那么接下来我们就一起来看看以下的数据备份教学吧。 操…

怎么用iTunes备份手机数据 苹果刷机怎么备份手机数据

手机已经成为日常生活中必不可少的物品了。在使用苹果手机的过程中会产生非常多的照片、视频、软件数据等等。那么碰到手机需要刷机的情况时就需要将这些资料备份到电脑上,然后再进行刷机。接下来就带大家了解一下怎么用iTunes备份手机数据以及苹果刷机怎么备份手机…

分布鲁棒优化研究(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

【鲁棒优化笔记】Comment to: 以Coding入门鲁棒优化:以一个例子引入(二)

Comment to: 以Coding入门鲁棒优化:以一个例子引入(二) 证明绝对值线性化的等价性 ** 作者:刘兴禄, 清华大学,清华-伯克利深圳学院,博士在读** 证明绝对值线性化的等价性 下面我们来证明一下绝…

【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【鲁棒优化笔记】以Coding入门鲁棒优化:以一个例子引入(二)-正确版

【鲁棒优化笔记】以Coding入门鲁棒优化:以一个例子引入(二) 投资组合的例子鲁棒优化模型的reformulation: 利用对偶进行reformulation利用对偶进行reformulationPython调用gurobi求解对偶reformulation后的模型 鲁棒优化模型的reformulation:…

yalmip求解鲁棒优化

使用yalmip求解鲁棒优化 前言鲁棒优化简介yalmip实操求解优化问题示例代码结果总结 前言 记录一下早期夭折的研究想法,想使用鲁棒优化(robust optimization,RO)解决整数变量的资源分配问题。目标函数和约束条件都很简单&#xff…

【鲁棒优化笔记】基于ROME编程入门鲁棒优化:以一个例子引入(一)

鲁棒优化|基于ROME编程入门鲁棒优化:以一个例子引入(上) 线性规划中的不确定性一个生产的例子MatlabROME求解 鲁棒优化简单案例:一个投资组合的例子不确定回报率鲁棒优化模型Matlab调用ROME包求解Robust Counterpart 参考文献 鲁棒…

鲁棒优化(3)-yalmip+guobi的小例子

前言 前面我们已经介绍了,连续线性模型的鲁棒对等转换全部过程,本章内容分两部分. 1.将鲁棒优化与机会约束结合,从概率的角度,选取Γ的大小,并给出一个简单易行的公式. 2.结合实例,直观的阐述鲁棒优化的过…

wildfly(JBOSS)启动报错

报错内容: 15:07:50,724 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([("deployment" > "MESwell.ear")]) - failure description: &q…

玩转Eclipse的Wildfly安装、配置到部署

本人也是第一次玩Wildfly,也就是Jboss,有错误的地方希望大家一起指出。(Windows部署)由于Wildfly是依赖与Java的Jdk的,所以在这之前要先安装JDK哦,具体安装步骤我就不多说了,相信大家应该是已经安装好了的。 第一步:到官网下载Wildfly。官方网站:http://www.wildfly.o…

Wildfly部署drools-workbench

首先下载drools-workbench drools官网 目前的最新版本是7.73.0.Final 新版的workbench 已经不支持Tomcat部署了,需要使用wildfly部署,最新的wildfly26.1.1但是测试下来部署workbench会失败,需要下载对应版本的wildfly,如图所示当…

配置Wildfly的JDBC驱动程序

1、环境 windows10、Wildfly26.1.3、JDK8.0、mysql8.0 2、配置方式 配置Wildfly的JDBC驱动一般有两种方式 1️⃣、以module的方式安装; 2️⃣、以应用deploy的程序包方式安装; 以module方式安装,是把驱动置于应用服务器中;以…

在wildfly 21中搭建cluster集群

文章目录 简介下载软件和相关组件配置domain创建应用程序部署应用程序集群配置总结 简介 wildfly是一个非常强大的工具,我们可以轻松的使用wildfly部署应用程序,更为强大的是,wildfly可以很方便的部署cluster应用。 今天我们通过一个例子来…

WildFly配置数据库(mysql)

1.安装wildfly:地址:WildFly Downloads 这里我使用的是WildFly12 2.配置环境 我们可以通过两种方式实现配置: 2.1 我们通过xml方式配置: 第一步:创建目录 在项目文件\wildfly-12.0.0.Final\wildfly12.0.0.Final\mod…