Android官方命令深入分析之bmgr
作者:宋志辉
bmgr是一个可以跟Backup Manager进行交互的shell工具,要使用这个工具,Android设备API最小为8.它提供了备份和恢复操作的命令,所以你无需频繁的清除数据。这些命令通过adb shell进行访问。
强制备份
正常情况下,你的应用在它的数据发生更改时,必须通过dataChanged()方法通知Backup Manager。Backup Manager接下来在将来的某个时间调用你的备份代理的onBackup()方法。然而,除了调用dataChanged()方法之外,你可以通过运行bmgr backup命令来发起一个备份请求。
adb shell bmgr backup <包名>
<包名>是你计划备份的应用的包名。当你执行这个备份命令时,你的应用的备份代理将会被调用通过onBackup()方法执行一系列的备份操作,但是不能确定什么时候会执行。然而,你可以通过bmgr run 命令强制立即执行备份操作:
adb shell bmgr run
这可以导致备份操作立即执行。触发所有的应用的备份代理,在上一次备份操作完成后调用dataChanged()方法。任何应用都可以通过bmgr backup进行手动计划备份。
强制恢复
不同于备份操作,恢复操作立即执行。Backup Manager现在提供了两种恢复操作。第一种是整个设备的数据进行备份,这通常发生在设备在第一次使用时,并且只有系统才能执行。第二种恢复操作恢复单个应用的活跃数据设置,这就意味着,应用将禁止当前的数据并且用最后一次备份的数据进行替代。可以通过调用requeRestore()方法调用。Backup Manager会调用你的备份代理的onRestore()方法。
当你测试你的应用时,你可以通过bmgr restore命令来实现恢复操作:
adb shell bmgr restore <package>
是指要恢复的应用的报名。Backup Manager将会立即执行恢复操作,前提是,应用当前没有运行。
其他命令
清除数据
单个应用的数据可以根据需求从活跃数据组中擦除。这在你开发备份代理时是非常有用的,防止bugs导致写入坏的数据或者保存状态信息。你可以通过bmgr wipe命令来擦除应用的数据。
adb shell bmgr wipe <package>
是指你希望擦除数据的应用的包名。下一次的备份操作应用将被视为之前从未进行过备份。
启用和禁止备份
可以通过bmgr enbled命令对Backup Manager进行启用。
adb shell bmgr enabled
这个命令对于你的应用从来没有调用备份代理来进行过备份来说,非常有用。用来验证操作系统是否认为需要执行类似操作。
你也可以通过如下命令禁用Backup Manager:
adb shell bmgr enable <boolean>
警告:当备份被禁止后,已经备份的数据会被清空。
Android官方命令深入分析之bmgr的更多相关文章
- Android 官方命令深入分析之android
作者:宋志辉 android命令是一个非常重要的开发工具,它可以: 创建.删除和查看Android Virtual Devices(AVDs). 创建和更新android项目. 更新你的android ...
- Android 官方命令深入分析
原文:www.libgdx.cn Android SDK包括了多种工具来帮助你创建基于Android平台的移动应用.这些工具一般分成两类:SDK 工具和 platform 工具. SDK 工具是独立的 ...
- Android官方命令深入分析之Hierarchy Viewer
Hierarchy Viewer允许你调试和优化用户界面.它提供了一个层可视的方式来显示. 启动Hierarchy Viewer,如下: 在Android Studio中,选择Tools > A ...
- Android官方命令深入分析之虚拟机
Android SDK包含了一个运行在计算机上的移动设备虚拟机.这个虚拟机可以允许你在没有物理设备的情况下开发和测试Android应用. 键盘命令 虚拟设备按键 对应键盘按键 Home HOME 菜单 ...
- Android官方命令深入分析之Device Monitor
Android Device Monitor是一个提供了图形化界面的可以对Android应用进行调试和分析的独立的工具.Monitor工具不需要IDE环境,比如Android Studio.包括以下工 ...
- Android 官方命令深入分析之Android Debug Bridge(adb)
作者:宋志辉 Android Debug Brideg(adb)是一个多用途的命令行工具.可以与Android虚拟机进行通信或连接真机.它同样提供了访问设备shell的高级命令行操作的权限.它是一个包 ...
- Android官方命令深入分析之AVD Manager
作者:宋志辉 AVD Manager提供了一个图形用户接口,通过它你能够创建和管理AVDs. 你能够通过下面方式执行AVD Manager: Eclipse:选择 Window > Androi ...
- Android官方命令深入分析之hprof-conv
hprof-conv工具可以将Android SDK工具生成的HPROF文件生成一个标准的格式,这样你就可以使用工具进行查看: hprof-conv [-z] <infile> <o ...
- Android官方命令深入分析之etc1tool
etc1tool是一个命令行工具,可以将PNG图像压缩为etc1标准,并且可以进行解压缩. 用法: etc1tool infile [--help | --encode | --encodeNoHea ...
随机推荐
- jvm 指令集代码
指令码 助记符 说明 0x00 nop 什么都不做 0x01 aconst_null 将null推送至栈顶 0x02 iconst_m1 将int型-1推送至栈顶 0x03 iconst_0 将int ...
- 修改原生单选框样式(vue单选组件)
一.效果如图 二.实现 修改单选样式 //html <div class="radio-wrap"> <input type="radio" ...
- 用js实现排列组合
在leetcode上看到一个题,代码实现排列组合的. 记得大学上课时候,就用c写过,现在用js试试,顺便看看耗时. 先看看3的阶乘: function permute(temArr,testArr){ ...
- php闭包类外操作私有属性
Closure::bind() Closure::bindTo(); class person{ private $age; private $sex; public function __const ...
- Oracle中rownum原理介绍
rownum原理如下:1.执行查询操作2.将第一行的row num置为13.将得到的行的row num与条件相比较,如果不匹配,则抛弃行,如果匹配,则返回行4.oracle获取下一行,然后将rownu ...
- node安装教程
推荐安装教程博客: https://www.cnblogs.com/zhouyu2017/p/6485265.html
- PHP 高级过滤器
PHP 高级过滤器 检测一个数字是否在一个范围内 以下实例使用了 filter_var() 函数来检测一个 INT 型的变量是否在 1 到 200 内: 实例 <?php$int = 122; ...
- 我为什么放弃使用MyBatis3的Mapper注解
最近在使用MyBatis3做项目.在使用注解实现Mapper的时候遇到了比较奇葩的问题:在实现数据的batch insert的时候总是报错.好不容易可以正常插入了,但是又不能返回自增的主键id到实体b ...
- django-redis
linuxapt-get install redis-serverpip install django-redis vim /etc/redis/redis.conf maxmemory 20mb s ...
- JAVA通过继承Thread来创建线程
创建一个线程的第二种方法是创建一个新的类,该类继承Thread类,然后创建一个该类的实例. 继承类必须重写run()方法,该方法是新线程的入口点.它也必须调用start()方法才能执行. 实例 // ...