Android Crash 报告反馈

1,Java中有一个接口,static interface Thread.UncaughtExceptionHandler     当Thread 因未捕获的异常而突然终止时,调用处理程序的接口。

2,Java中有一个方法,static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)     设置当线程由于未捕获到异常而突然终止,并且没有为该线程定义其他处理程序时所调用的默认处理程序。

public class DefaultExceptionHandler implements UncaughtExceptionHandler { 

	    private Context act = null; 

	    public DefaultExceptionHandler(Context act) { 

	       this.act = act; 
	    } 

	    @Override 
	    public void uncaughtException(Thread thread, Throwable ex) { 

	       // 收集异常信息 并且发送到服务器 

	       sendCrashReport(ex); 

	       // 等待半秒 
	       try { 

	           Thread.sleep(500); 

	       } catch (InterruptedException e) { 


	           // 

	       } 

	       // 处理异常 

	       handleException(); 

	    } 

	    private void sendCrashReport(Throwable ex) { 

	       StringBuffer exceptionStr = new StringBuffer(); 

	       exceptionStr.append(ex.getMessage()); 

	       StackTraceElement[] elements = ex.getStackTrace(); 

	       for (int i = 0; i < elements.length; i++) { 
	           exceptionStr.append(elements[i].toString()); 
	       } 
	       //TODO  
	       //发送收集到的Crash信息到服务器 
	    } 

	    private void handleException() { 

	       //TODO  
	       //这里可以对异常进行处理。 
	       //比如提示用户程序崩溃了。 
	       //比如记录重要的信息,尝试恢复现场。 
	       //或者干脆记录重要的信息后,直接杀死程序。 
	    } 


	} 


3,在主Activity的onCreate(Bundle savedInstanceState)方法中增加如下代码。
Thread.setDefaultUncaughtExceptionHandler(new DefaultExceptionHandler(
       this.getApplicationContext())
);

4,发送到服务器!

猜你喜欢

转载自jxw3042.iteye.com/blog/1750708