android程序崩溃重启,Android Crash处理 崩溃后禁止默认重启与崩溃后手动重启

  • Post author:
  • Post category:其他


转载请注明出处。

伸手党福利: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。