/** * 当UncaughtException发生时会转入该函数来处理 */ public void UncaughtException(Thread thread, Throwable ex) { if (!handleException(ex) && mDefaultHandler != null) { //如果用户没有处理则让系统默认的异常处理器来处理 mDefaultHandler.UncaughtException(thread, ex); } else { DownloadBookService.cancel(); // 取消任务 LogUtils.i("取消下载任务"); new Thread(() => { Looper.Prepare(); ToastUtils.showSingleToast("哎呀,程序发生异常啦..."); Looper.Loop(); }).Start(); try { Thread.Sleep(3000); } catch (InterruptedException e) { LogUtils.e("CrashHandler.InterruptedException--->" + e.ToString()); } //退出程序 Process.KillProcess(Process.MyPid()); JavaSystem.Exit(1); } }
/// <summary> /// 全局的异常捕获 /// </summary> /// <param name="thread"></param> /// <param name="ex"></param> public void UncaughtException(Thread thread, Throwable ex) { var status = HandleException(ex); if (!status && _uncaughtException != null) { //如果用户没有处理则让系统默认的异常处理器来处理 _uncaughtException.UncaughtException(thread, ex); } else { //释放资源不能像常规的那样在activity的onDestroy方法里面执行,因为如果出现全局异常捕获,activity的关闭有时候是不会再走相关的生命周期函数的(onDesktroy,onStop,onPause等)。 AppManager.Instance.AppExit(_context); } }
/// <summary> /// 当UncaughtException发生时会转入该函数来处理 /// </summary> /// <param name="thread"></param> /// <param name="ex"></param> public void UncaughtException(Thread thread, Throwable ex) { if (!HandleException(ex) && mDefaultHandler != null) { //如果用户没有处理则让系统默认的异常处理器来处理 mDefaultHandler.UncaughtException(thread, ex); } else { //new Thread(() => //{ // Looper.Prepare(); // ToastUtils.ShowSingleToast($"很抱歉,程序出现异常,即将重启:{ex.Message}"); // Looper.Loop(); //}).Start(); ////展示的时间 //Thread.Sleep(5000); //退出程序 Process.KillProcess(Process.MyPid()); JavaSystem.Exit(1); } }