一、应用层流程分析

设置模块中恢复出厂设置,不管是否删除SD卡,最终都会执行如下两步:

1、 往/cache/recovery/command文件中写入命令字段

2、 重启系统,进入recovery模式

具体可参考framework/base/core/java/android/os/RecoverySystem.java文件,代码片段如下:

在rebootWipeUserData方法中,会调用bootCommand方法,并传入参数--wipe_data命令字段,重启进入recovery模式后,recovery服务会通过读取此参数来擦除data和cache分区,详细流程见下文。

二、恢复模式流程分析

重启后,从recovery模式的init.rc文件中可以看到启动recovery服务,具体可参考bootable/recovery/etc/init.rc文件,代码片段如下:

recovery服务的主函数在bootable/recovery/recovery.c文件中,main函数的分析如下:

ui_init()

说明:初始化ui,recovery模式的交互界面

get_args(&argc, &argv);

说明:读取/cache/recovery/command文件,并根据命令字段进行相应操作,因为恢复出厂设置的时候/cache/recovery/command的内--wipe_data,所以它会擦除data和cache分区,代码片段如下:

分区擦除后,系统重启,然后进正常开机流程,重新使用system分区的内容完成开机初始化,代码片段如下:

至此,恢复出厂设置流程完毕。

更多相关文章

  1. Android(安卓)读取Bitmap的几种方式
  2. ViewModels 和 LiveData:模式 +反模式
  3. Android(安卓)Phonebook编写联系人UI加载及联系人保存流程(四)
  4. Android(第一季重制版)
  5. Dcloud安卓离线打包
  6. [Android(安卓)Studio] 关于*.SO压缩问题
  7. Android(安卓)button, xml文件定义形状,代码中修改背景颜色
  8. Android(安卓)MVPR 架构模式-Part1
  9. android使用ffmpeg的实例程序

随机推荐

  1. android aidl通讯两个APP之间的应用
  2. android读写文件
  3. C# mono android 图片上传进度条实现
  4. android 2.2+ 完全退出程序的方法
  5. android SpannableString使用详解,替代多
  6. android中Search之Creating a Searchable
  7. Android(安卓)MediaPlayer研究问题
  8. 判断手机类型
  9. Linearlayout 添加divider
  10. Android开发者网址导航