群里推荐的,蛮好用的,能很好地指出问题,先记下用法,有时间研究下它是怎么做的,项目中 application 中这么初始化的
//让软件状态还原的框架
Recovery.getInstance()
.debug(true)
.recoverInBackground(false)
.recoverStack(true)
.mainPage(MainActivity.class)
.recoverEnabled(false)
.init(this);
转载自 Android运行时Crash自动恢复框架-Recovery
1. Recovery 是什么
Recovery”帮助你自动处理程序在运行时的Crash,它含有以下几点功能
- 自动恢复Activity Stack和数据
- 支持只恢复栈顶Activity
- Crash信息的显示与保存
- 应用重启或者清空缓存
- 一分钟内两次恢复失败不再恢复而进行重启应用
2. 使用指南
2.1 添加依赖
compile 'com.zxy.android:recovery:0.1.2'
2.2 在 Application 中初始化
Recovery.getInstance()
.debug(true)
.recoverInBackground(false)
.recoverStack(true)
.mainPage(MainActivity.class)
.recoverEnabled(true)
.callback(new MyCrashCallback())
.silent(false, Recovery.SilentMode.RECOVER_ACTIVITY_STACK)
.skip(TestActivity.class)
.init(this);
2.3 添加权限
android.permission.GET_TASKS
2.4 参数意义
如果你仅仅需要在开发时显示RecoveryActivity界面来获取debug数据,而在线上版本不显示,那么可以设置recoverEnabled(false);
2.5 Callback
public interface RecoveryCallback {
void stackTrace(String stackTrace);
void cause(String cause);
void exception(String throwExceptionType, String throwClassName, String throwMethodName, int throwLineNumber);
void throwable(Throwable throwable);
}
2.6 Custom Theme
自定义RecoveryActivity的主题,需重写以下styles属性:
<color name="recoveryColorPrimary">#F44336</color>
<color name="recoveryColorPrimaryDark">#D32F2F</color>
<color name="recoveryColorAccent">#BDBDBD</color>
<color name="recoveryTextColor">#FFFFFF</color>
2.7 Crash File Path
{SDCard Dir}/Android/data/{packageName}/files/recovery_crash/