使用CrashHandler来获取应用的Crash信息

本文介绍了如何在安卓应用中利用CrashHandler来捕获和处理异常,以获取应用崩溃时的详细信息,并将其保存到本地。CrashHandler会在程序异常时记录设备信息和异常堆栈,为开发者提供调试帮助。
摘要由CSDN通过智能技术生成

在我们的实际开发中,我们都避免不了遇到我们程序crash直接崩掉的情况,这对用户来说是很不友好的 ,当然也是我们开发者不想看到的。所以我们希望当我们的程序发生异常crash的时候,我们能够得治用户的crash信息,我们也可以在程序crash的时候弹出一个对话框告诉用户程序crash了。然后再退出,这样比闪退会好一些。

在安卓中我们可以利用CrashHandler来监视我们应用的crash信息。这里也将CrashHander引入到我们的框架中去。

[java]  view plain  copy
  1. package com.nsu.library.utils.log;  
  2.   
  3. import android.content.Context;  
  4. import android.content.pm.PackageInfo;  
  5. import android.content.pm.PackageManager;  
  6. import android.os.Build;  
  7. import android.os.Environment;  
  8.   
  9. import java.io.*;  
  10. import java.util.Calendar;  
  11. import java.util.Locale;  
  12.   
  13. /** 
  14.  * Create By Anthony on 2016/1/16 
  15.  * 当前类注释:异常处理类,将我们的异常信息保存到本地SD卡上面或者上传到服务器 
  16.  */  
  17. public class UncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {  
  18.     private static final boolean DEBUG =true;  
  19.     private static final String TAG ="UncaughtExceptionHandler";  
  20.     private Context mContext;  
  21.     private Thread.UncaughtExceptionHandler mDefaultHandler;  
  22.   
  23.     public UncaughtExceptionHandler(Context context, Thread.UncaughtExceptionHandler defaultHandler){  
  24.         this.mDefaultHandler = defaultHandler;  
  25.         this.mContext = context;  
  26.     }  
  27.   
  28.     @Override  
  29.     public void uncaughtException(Thread thread, Throwable ex) {  
  30.         Log.e("Crash""Application crash", ex);  
  31.         writeFile(thread, ex);//将异常信息保存到SD卡上面  
  32.         //TODO 在这里写方法将异常信息上传到服务器  
  33.         mDefaultHandler.uncaughtException(thread, ex);  
  34.     }  
  35.   
  36.     private void writeFile(final Thread thread, final Throwable ex){  
  37.         //如果SD卡不存在则无法写入  
  38.         if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){  
  39.             if(DEBUG){  
  40.                 Log.w(TAG,"SDCard unmounted, skip write exception to file");  
  41.                 return ;  
  42.             }  
  43.         }  
  44.         try {  
  45.             OutputStream os = getLogStream();  
  46.             os.write(getExceptionInformation(thread, ex).getBytes("utf-8"));  
  47.             os.flush();  
  48.             os.close();  
  49.   
  50.             andr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值