android-O RescueParty 介绍

一. 概述
Android系统在很多情况下都会进入到一种无法自主恢复的状态下:例如无法开机,常驻系统进程无限crash等等,往往在这些情况下手机已经无法正常使用了,像这些情况小白用户往往都不知道怎么修复手机,只能送回售后了。在O上加了一个救援的机制就是来解决这些问题的,这个机制叫: RescueParty
RescueParty 的原理大致为:同一个uid的应用发生多次异常,RescueParty会根据该uid记录发生的次数,当次数达到默认次数后会调整拯救的策略。拯救策略等级分为:
1.NONE
2.RESET_SETTINGS_UNTRUSTED_DEFAULTS
3.RESET_SETTINGS_UNTRUSTED_CHANGES
4.RESET_SETTINGS_TRUSTED_DEFAULTS
5.FACTORY_RESET
最终的拯救策略是进recovery模式。

那么哪些场景会造成触发这个机制呢?
1.a persistent app is stuck in a crash loop
2.we're stuck in a runtime restart loop.
二.RescueParty 原理介绍
RescueParty的原理我们从第一点“ a persistent app is stuck in a crash”来说,appCrash的流程这里就不多说了,看一张时序图好了:

O上在AppErrors.java的 crashApplicationInner方法中加上了 RescueParty监控,具体代码如下:
void crashApplicationInner(ProcessRecord r, ApplicationErrorReport.CrashInfo crashInfo,
	int callingPid, int callingUid) {
	。。。
	// If a persistent app is stuck in a crash loop, the device isn't very
	// usable, so we want to consider sending out a rescue party.
	if (r != null && r.persistent) {
		RescueParty.notePersistentAppCrash(mContext, r.uid);
	}
	
	AppErrorResult result = new AppErrorResult();
	TaskRecord task;
 	。。。
}


这里调用了 RescueParty
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值