Android APP 获取crash异常信息

今天能写这个对我来讲有点晚,但也不晚;晚的是做android开发已经四年了,才注意到这个现象,才会这个知识点确实很晚;不晚的是,学习东西不怕晚,就怕不学;

其实Crash异常并不害怕,因为它很好解决,关键是用户在使用的过程中出现Crash给用户很坏的体验,给人一种很low的感觉!

捕获异常也不难主要有以下几个步骤:

1、写一个类实现Thread.UncaughtExceptionHandler;

2、写一个Application,注册自己的UncaughtExceptionHandler;

3、对自己捕获的异常进行处理;

具体如下:

1、实现自己的crashHandler

public class CrashHandler implements UncaughtExceptionHandler {  
      
    //系统默认的UncaughtException处理类   
    private Thread.UncaughtExceptionHandler mDefaultHandler;  
    //CrashHandler实例  
    private static CrashHandler INSTANCE = new CrashHandler();  
    //程序的Context对象  
    private Context mContext;  
 
    /** 保证只有一个CrashHandler实例 */  
    private CrashHandler() {  
    }  
  
    /** 获取CrashHandler实例 ,单例模式 */  
    public static CrashHandler getInstance() {  
        return INSTANCE;  
    }  
  
    /** 
     * 初始化 
     *  
     * @param context 
     */  
    public void init(Context context) {  
        mContext = context;  
        //获取系统默认的UncaughtException处理器  
        mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();  
        //设置该CrashHandler为程序的默认处理器  
        Thread.setDefaultUncaughtExceptionHandler(this);  
    }  
  
    /** 
     * 当UncaughtException发生时会转入该函数来处理 
     */  
    @Override  
    public void uncaughtException(Thread thread, Throwable ex) {  
        if (!handleException(ex) && mDefaultHandler != null) {  
            //如果用户没有处理则让系统默认的异常处理器来处理  
            mDefaultHandler.uncaughtException(thread, ex);  
        } else {  
            try {  
                Thread.sleep(3000);  
            } catch (InterruptedException e) {  
                Log.e(TAG, "error : ", e);  
            }  
            //退出程序  
            android.os.Process.killProcess(android.os.Process.myPid());  
            System.exit(1);  
        }  
    }  

以上为不完整的例子,大概描述了怎么使用;

2、写一个自己的Application

public class CrashApplication extends Application {  
    @Override  
    public void onCreate() {  
        super.onCreate();  
        CrashHandler crashHandler = CrashHandler.getInstance();  
        crashHandler.init(getApplicationContext());  
    }  
}

3、处理捕获到的异常信息

得到了信息怎么处理就由你了,一般是向服务器上传,然后你可以根据异常信息进行修改!



文章写的有些粗糙,切勿介意,可提出建议,后面进行修改!Thanks

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值