未捕获异常的处理
16lz
2021-01-25
原文地址为 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());表明出现异常由自己来处理。 接下来重写异常处理类
此方法会强制结束所有的Activity和service,当然也可以在service里进行,达到后台强制结束任务的目的。在Activity结束后,系统会回到最近为onpause状态的Activity。 经过本人的亲自验证,当发生未捕获的异常时,app直接退出,不会弹出“很抱歉,"xx应用"已停止运行。”的对话框
public class AntrouApp extends Application implements Thread.UncaughtExceptionHandler { @Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.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与js的交互方式
- JNI 防混淆 Android(安卓)proguard
- Android屏蔽Home键,适配所有版本
- 【Android】继承SimpleCursorAdapter定制Adapter
- Android复选框对话框用法实例简析
- Android实现TextView字体过长时滚动(跑马灯)显示
- Parcelable接口的使用(跨进程,Intent传输)
- Android(安卓)9.0 (P版本) 原生的电池-Google省电模式
- Android中加入依赖库点击运行后报错:com.android.dex.DexIndexOve