统一管理程序异常
2015-11-01 19:21
429 查看
一、简介
本文介绍的是对程序异常的统一管理,当程序发生异常的时候,不会让用户看到原生的崩溃界面,我们可以自定义出更人性化的界面,同时可以把程序的异常信息返回给服务器。让我们可以轻松的维护程序,逐渐减少程序的bug,进而完善程序。
二、实现
以上是自定义的异常处理器,于BaseApplication中,加入如下语句
然后让我们的activity继承与此baseativity即可。
本文介绍的是对程序异常的统一管理,当程序发生异常的时候,不会让用户看到原生的崩溃界面,我们可以自定义出更人性化的界面,同时可以把程序的异常信息返回给服务器。让我们可以轻松的维护程序,逐渐减少程序的bug,进而完善程序。
二、实现
import java.lang.Thread.UncaughtExceptionHandler; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.Looper; import android.support.v7.app.AlertDialog; /** * * @author Richard * */ public class CrashHandler implements UncaughtExceptionHandler { public static final String TAG = "CrashHandler"; private static CrashHandler INSTANCE = new CrashHandler(); private Context mContext; private Thread.UncaughtExceptionHandler mDefaultHandler; private CrashHandler() { } public static CrashHandler getInstance() { return INSTANCE; } public void init(Context ctx) { mContext = ctx; mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler(); Thread.setDefaultUncaughtExceptionHandler(this); } @Override public void uncaughtException(Thread thread, Throwable ex) { System.out.println("uncaughtException"); new Thread() { @Override public void run() { Looper.prepare(); new AlertDialog.Builder(mContext).setTitle("提示").setCancelable(false).setMessage("程序崩溃了...") .setNeutralButton("我知道了", new OnClickListener() // 完全退出程序需要把activity全部注册到一个数组中 { public void onClick(DialogInterface dialog, int which) { System.exit(0); // 杀死线程,退出应用。 android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); } }).create().show(); Looper.loop(); } }.start(); } private boolean handleException(Throwable ex) { if (ex == null) { return true; } return true; } }
以上是自定义的异常处理器,于BaseApplication中,加入如下语句
CrashHandler crashHandler = CrashHandler.getInstance(); crashHandler.init(this);
然后让我们的activity继承与此baseativity即可。
相关文章推荐
- SourceProvider.getJniDirectories
- Trac 中文语言安装
- 软件 bug 的生命周期
- 【DevOps】为什么我们永远疲于奔命?
- 网络管理之IP地址篇
- Firefox2中输入框丢失光标bug的解决方法
- 文件的读出 编辑 管理
- Ruby中的异常处理代码编写示例
- for命令的一些bug分析
- SQL Server 2008 R2 应用及多服务器管理
- 修正IE下使用CSS属性overflow的bug
- 解决IE6 3像素Bug的css写法
- MySQL抛出Incorrect string value异常分析
- VC下通过系统快照实现进程管理的方法
- JS注释所产生的bug 即使注释也会执行
- IE本地存储userdata的一个bug说明
- IE在DOM操作有表单控件时的bug
- 使用jQuery管理选择结果
- ie 处理 gif动画 的onload 事件的一个 bug
- 详解JavaScript中的异常处理方法