安卓程序监听崩溃检查

Thread.getDefaultUncaughtExceptionHandler()
可以获取系统默认的UncaughtException处理器  
通过Thread.setDefaultUncaughtExceptionHandler,设置我们自己的Crash处理器


实现UncaughtExceptionHandler 接口,重写uncaughtException()方法


/** 
     * 当UncaughtException发生时会转入该函数来处理 
     */  
    @Override  
    public void uncaughtException(Thread thread, Throwable ex) {  
        if (!handleException(ex) && mDefaultHandler != null) {  
            // 如果用户没有处理则让系统默认的异常处理器来处理  
            mDefaultHandler.uncaughtException(thread, ex);  
        } else {  
            try {  
                Thread.sleep(700);  
            } catch (InterruptedException e) {  
                Log.e(TAG, "error : ", e);  
            } 
            Appliction application=Appliction.getInstance();
            Intent intent = new Intent(application, shouyeActivity.class);
            PendingIntent restartIntent = PendingIntent.getActivity(  
            application.getApplicationContext(),0, intent,  
                    Intent.FLAG_ACTIVITY_NEW_TASK);                                               
            //退出程序                                        
            AlarmManager mgr = (AlarmManager)application.getSystemService(Context.ALARM_SERVICE);  
            mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000,  restartIntent); // 1秒钟后重启应用 
            application.finishActivity();; 
              
        }  
    }  


  /** 
     * 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成. 
     *  
     * @param ex 
     * @return true:如果处理了该异常信息;否则返回false. 
     */  
    private boolean handleException(Throwable ex) {  
        if (ex == null) {  
            return false;  
        }  
        // 使用Toast来显示异常信息  
        new Thread() {  
            @Override  
            public void run() {  
                Looper.prepare();  
                Toast.makeText(mContext, mContext.getString(R.string.str_procedure_error), Toast.LENGTH_LONG)  .show();  
                Looper.loop();  
            }  
        }.start();  
        // 保存日志文件  
        saveCrashInfo2File(ex);  
        return true;  
    }  




在Appliction的onCreate()方法中


设置我们自己的Crash处理器


/**
* @author: JinPeng
* @Time:2016-12-14: 下午12:56:57
* 退出应用。关闭所有activity
*/
public void finishActivity(){
for (Activity activity : list) {  
            if (null != activity) {  
                activity.finish();  
            }  
        }
//杀死该应用进程
      android.os.Process.killProcess(android.os.Process.myPid());  
      System.exit(1);  
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值