예제 #1
0
        /**
         * 当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);
            }
        }
예제 #2
0
            /// <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);
                }
            }
예제 #3
0
        /// <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);
            }
        }