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>

警告:当备份被禁止后,已经备份的数据会被清空。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是您需要的java代码: ``` import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ADBController { public static void main(String[] args) throws IOException { Runtime runtime = Runtime.getRuntime(); Process process = null; //Send reboot command process = runtime.exec("adb reboot"); System.out.println("ADB command sent: adb reboot"); //Wait for device to restart try{ Thread.sleep(10000); //Wait for 10 seconds }catch(InterruptedException e){ System.out.println("InterruptedException caught"); } //Loop until getRestoreStatus() returns non-empty string String restoreStatus = ""; long startTime = System.currentTimeMillis(); while(restoreStatus.isEmpty()){ try{ process = runtime.exec("adb shell bmgr getPendingRestores"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); restoreStatus = reader.readLine(); System.out.println("Restore status: " + restoreStatus); reader.close(); }catch(IOException e){ System.out.println("IOException caught"); e.printStackTrace(); } //Exit loop after 30 seconds if((System.currentTimeMillis() - startTime) > 30000){ System.out.println("Exiting loop after 30 seconds"); break; } //Wait for 5 seconds before checking restore status again try{ Thread.sleep(5000); //Wait for 5 seconds }catch(InterruptedException e){ System.out.println("InterruptedException caught"); } } } } ``` 注意:在使用此代码之前,请确认您已经安装并配置好了ADB驱动程序以及在Path环境变量中添加了ADB的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值