作者:窝窝笑丫 | 来源:互联网 | 2023-09-11 18:08
众所周知,Android程序在运行时遇到未处理的错误,会弹出类似程序异常退出之类的dialog,然后自动关闭。那么这里介绍捕获全局未知异常和修改那个弹出的dialog的方法。首先,
众所周知,Android程序在运行时遇到未处理的错误,会弹出类似程序异常退出之类的dialog,然后自动关闭。
那么这里介绍捕获全局未知异常和修改那个弹出的dialog的方法。
- 首先,如很多网上的博客所言在程序的Application子类中添加如下代码
//当程序发生Uncaught异常时捕获
Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler(){
@Override
public void uncaughtException (Thread thread, Throwable e) {
//做你要做的处理,比如把e.getMessage()保存到文件,发送一个email等等,不是本篇重点,不再赘述
}});
这里Thread.UncaughtExceptionHandler()
可以另写一个类来继承它,重构代码的事这里就不赘述了。
今天主要要讲怎么修改让用户得知程序已经崩溃了的方法。
网上很多方法是说在uncaughtException
方法中Toast一条信息或者弹一个Dialog,这里本人亲测(4.0以上的系统),都是行不通的
那么现在只能剑走偏锋,另寻他方。
自定义一个Activity来代替Dialog的功能
- 定义一个类继承Activity,AndroidManifest.xml文件中声明此Activity,并且在此Activity标签中声明theme为继承
@android:style/Theme.Dialog
的style - 在
uncaughtException
方法中
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
System.exit(1);//关闭已奔溃的app进程
特别注意