APP数据备份

本文介绍如何使用Android系统内置的adb工具实现应用数据的备份与恢复。包括SharedPreferences和文件的备份方式,演示了完整的备份与恢复流程,并展示了如何通过代码控制备份功能。

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;

    @Override
    protected 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, ""));
        }
    }

    @Override
    public 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中注册。
详细可以参考这篇博客

源码下载地址: https://pan.quark.cn/s/90d810f058e2 在信息技术行业中,特别是在智能设备的操作与维护环节中,"中兴ZXV10 B860AV1.1备份的应用程序"是一个与设备个性化定制、系统版本迭代及故障补救密切相关的议题。中兴ZXV10 B860AV1.1是一款具备网络功能的智能电视接收器,它融合了互联网服务,能够为用户带来多元化的在线影音、软件运用及游戏娱乐。当提及“刷机备份”这一概念时,一般是指为了维护电视接收器的原生系统或为系统升级做准备,对设备上的软件及系统资料执行的一种保存措施。我们接下来探讨“刷机”这一词汇的含义。在智能设备语境下,“刷机”指代对设备操作系统(OS)进行变更或升级,通常借助安装非官方固件来完成。针对中兴ZXV10 B860AV1.1电视接收器,用户执行刷机行为或许源于以下动机:优化设备运行效率、增添新特性、修正系统缺陷或获取特定区域的内容。在刷机操作开始之前,进行备份工作具有决定性意义,它能够规避刷机期间可能出现的失误导致设备无法启动的情况,保障设备能够还原至先前的正常运作状态。“备份的应用程序”具体指在刷机前将电视接收器上安装的各类软件及其关联数据保存下来。这通常涵盖用户自行下载的应用程序、系统设定及用户偏好等。保存这些应用程序有助于刷机完成后迅速还原用户的定制化设置,省去逐个重新安装和配置软件的繁琐过程。不仅如此,部分软件可能与新的固件版本存在兼容性问题,通过备份能够让用户保留这些关键的软件应用。在“新建文件夹”这个压缩文件内,或许收录了电视接收器的系统资料、应用程序的APK安装包、配置设定以及其他必要信息。用户能够通过解压缩该文件,将备份的数据迁移至新的系统环境中,或者在必要时还原至原来的系统状...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值