转载请注明出处。
伸手党福利:compile ‘com.tuzhenlei:crashhandler:1.0.1’
详情参见文档和demo:github地址
/**简单初始化*/
//CrashHandler.getInstance().init(this, BuildConfig.DEBUG);
/**个性初始化*/
CrashHandler.getInstance().init(this, BuildConfig.DEBUG, true, 0, MainActivity.class);
/**
* 参数1:this
* 参数2:是否保存日志到SD卡crash目录,建议设置为BuildConfig.DEBUG,在debug时候保存,方便调试
* 参数3:是否crash后重启APP
* 参数4:多少秒后重启app,建议设为0,因为重启采用闹钟定时任务模式,app会反应3秒钟,所以最快也是3-4秒后重启
* 参数5:重启后打开的第一个activity,建议是splashActivity
*/
/**
* 更多的设置方法
*/
/*
//自定义Toast
Toast toast = Toast.makeText(this, “自定义提示信息”, Toast.LENGTH_LONG);
toast.setGravity(Gravity.BOTTOM, 0, 0);
CrashHandler.setCustomToast(toast);
//自定义提示信息
CrashHandler.setCrashTip(“自定义提示信息”);
//自定义APP关闭动画
CrashHandler.setCloseAnimation(android.R.anim.fade_out);
*/
复制代码
Crash相信是很多朋友开发过程经常遇到的问题。经过本人测试,Android在API21以下(也就是Android5.0以下),crash后会直接退出应用;但是在API21以上(5.0以上系统),会遵循以下原则重启:
包含service, 如果程序crash的时候,运行着service,那么系统会重新启动service 。
不包含service,只有一个Activity,那么系统不会重新启动该Activity 。
不包含service,但是当前栈中包含两个Activity, A–>B, 如果B crash,那么系统会重启A。
不包含service,但是当前栈中包含三个Activity, A–>B–>C, 如果C crash,那么系统会重启B,并且A仍然存在,即可以从重启的Back到A。