最近在搞android一个设备的开机问题,每次开机后没有半分钟就进入factory reset,开始我以为是shutdownthread这个service在搞鬼,于是我就把shutdownthead的的关机流程和重启流程都注释掉了,还是不正常。
由于只在user版本复现,于是log后来搞了很久才抓到,通过分析是由于一个系统核心app 一直挂掉,RescueParty检测到了,就进入到了factoryreset界面了。
代码文件:frameworks/base/services/core/java/com/android/server/RescueParty.java
关键代码:
private static void executeRescueLevelInternal(Context context, int level) throws Exception {
switch (level) {
case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS:
resetAllSettings(context, Settings.RESET_MODE_UNTRUSTED_DEFAULTS);
break;
case LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES:
resetAllSettings(context, Settings.RESET_MODE_UNTRUSTED_CHANGES);
break;
case LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS:
resetAllSettings(context, Settings.RESET_MODE_TRUSTED_DEFAULTS);
break;
case LEVEL_FACTORY_RESET:
RecoverySystem.rebootPromptAndWipeUserData(context, TAG);
break;
}
}