优点:摆脱原始的Crash界面处理
缺点:无法自定义界面实现自定义Ui,如果希望重新制定crash的UI,可以通过将项目以一个lab的方式导入
介绍:“Recovery”帮助你自动处理程序在运行时的Crash,它含有以下几点功能
自动恢复Activity Stack和数据
支持只恢复栈顶Activity
Crash信息的显示与保存
应用重启或者清空缓存
一分钟内两次恢复失败不再恢复而进行重启应用
运行中遇到的问题,这里使用到了6.0如果你的版本是大于6.0的,这里build.VERSION_CODES.M就不会报错,但是如果版本时低于6.0,需要将该部分代码去掉
使用:
Gradle
compile 'com.zxy.android:recovery:0.0.8'
Maven
<dependency>
<groupId>com.zxy.android</groupId>
<artifactId>recovery</artifactId>
<version>0.0.8</version>
<type>pom</type>
</dependency>
你可以使用类似如下初始化代码在你自定义的Application中进行初始化:
Recovery.getInstance()
.debug(true)
.recoverInBackground(false)
.recoverStack(true)
.mainPage(MainActivity.class)
.callback(new MyCrashCallback())
.init(this);
并且在manifest中授权
android.permission.GET_TASKS
如果你不想在应用发生Crash时显示RecoveryActivity,你可以使用静默恢复来进行无界面的恢复你的应用,那么请使用类似如下初始化代码在你自定义的Application中进行初始化:
Recovery.getInstance()
.debug(true)
.recoverInBackground(false)
.silent(false, Recovery.SilentMode.RECOVER_ACTIVITY_STACK)
.init(this);
Arguments
Argument Type Function
debug boolean 是否开启debug模式
recoverInBackgroud boolean 当应用在后台时发生Crash,是否需要进行恢复
recoverStack boolean 是否恢复整个Activity Stack,否则将恢复栈顶Activity
mainPage Class<? extends Activity> 回退的界面
callback RecoveryCallback 发生Crash时的回调
silent boolean,SilentMode 是否使用静默恢复,如果设置为true的情况下,那么在发生Crash时将不显示RecoveryActivity界面来进行恢复,而是自动的恢复Activity的堆栈和数据,也就是无界面恢复
SilentMode
RESTART - 重启应用
RECOVER_ACTIVITY_STACK - 恢复Activity堆栈
RECOVER_TOP_ACTIVITY - 恢复栈顶Activity
RESTART_AND_CLEAR - 重启应用并清空缓存数据
Callback
public interface RecoveryCallback {
void stackTrace(String stackTrace);
void cause(String cause);
void exception(String throwExceptionType, String throwClassName, String throwMethodName, int throwLineNumber);
}
Custom Theme
自定义RecoveryActivity的主题,需重写以下styles属性:
<color name="recoveryColorPrimary">#F44336</color>
<color name="recoveryColorPrimaryDark">#D32F2F</color>
<color name="recoveryColorAccent">#BDBDBD</color>
<color name="recoveryTextColor">#FFFFFF</color>
Crash File Path
{SDCard Dir}/Android/data/{packageName}/files/recovery_crash/
Update history
VERSION-0.0.5——支持静默恢复 VERSION-0.0.6——加强静默恢复模式的保护 VERSION-0.0.7——添加混淆配置 VERSION-0.0.8——增加可配置不需要恢复的Activity,方法:skip()