未捕获异常的处理

 原文地址为 http://www.360doc.com/content/12/0831/10/1554663_233345313.shtml
 
这种方法在网上已经有了部分介绍,但是大部分人不知道怎么取消Force Close的对话框。“通过重写Android应用程序的Application基类自己实现 Thread.UncaughtExceptionHandler接口的uncaughtException方法是可以避免出现FC窗口的,用户感觉直接退出了一样”。这是网上能找到的说明,这段话让人看了摸不着头脑,大部分人不知道怎么重写Application基类并实现接口。废话不多说,直接上代码! 首先需要在onCreate中添加此句代码:Thread.setDefaultUncaughtExceptionHandler(new AntrouApp());表明出现异常由自己来处理。 接下来重写异常处理类
public class AntrouApp extends Application implements Thread.UncaughtExceptionHandler {
    	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
	}
	@Override
    	public void uncaughtException(Thread thread, Throwable ex) {
		ex.printStackTrace();		
		// 使用下面这个函数时,应用直接退出,无提示信息
		//    android.os.Process.killProcess(android.os.Process.myPid());  
		//Thread.getDefaultUncaughtExceptionHandler().uncaughtException(thread, ex); 
		//若没有处理,则按照系统自己的处理方式处理
 
		//实验发现上面的异常处理有的时候不能退出应用,因此建议写一个单例List,进行储备进入过的Actitvty,		然后再次调用单例退出。下一篇将自己的单例贴上。
    	} 
}

此方法会强制结束所有的Activity和service,当然也可以在service里进行,达到后台强制结束任务的目的。在Activity结束后,系统会回到最近为onpause状态的Activity。
 
 
经过本人的亲自验证,当发生未捕获的异常时,app直接退出,不会弹出“很抱歉,"xx应用"已停止运行。”的对话框

你可能感兴趣的:(android)