Thread.UncaughtExceptionHandler捕获未知异常
2013-05-08 10:05
441 查看
在Android开发中,常常会出现uncheched Exception 导致程序的crash,为了提供良好的用户体验,并对出错的信息进行收集,以便对程序进行改进,提高程序的健壮性。因此,常使用Thread.UncaughtExceptionHandler来进行处理。
首先需要继承Thread.UncaughtExceptionHandler类
public class CrashHandler implements Thread.UncaughtExceptionHandler { public static final String TAG = CrashHandler.class.getSimpleName(); 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) { // if (!handleException(ex) && mDefaultHandler != null) { // mDefaultHandler.uncaughtException(thread, ex); // } else { // android.os.Process.killProcess(android.os.Process.myPid()); // System.exit(10); // } System.out.println("uncaughtException"); new Thread() { @Override public void run() { Looper.prepare(); new AlertDialog.Builder(mContext).setTitle("提示").setCancelable(false) .setMessage("程序崩溃了...").setNeutralButton("我知道了", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.exit(0); } }) .create().show(); Looper.loop(); } }.start(); } /** * 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成. 开发者可以根据自己的情况来自定义异常处理逻辑 * * @param ex * @return true:如果处理了该异常信息;否则返回false */ private boolean handleException(Throwable ex) { if (ex == null) { return true; } new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { new AlertDialog.Builder(mContext).setTitle("提示") .setMessage("程序崩溃了...").setNeutralButton("我知道了", null) .create().show(); } }); return true; } }然后在Application类中进行注册
public class MyApplication extends Application{ @Override public void onCreate(){ super.onCreate(); initErrorHandler(); } private void initErrorHandler(){ CrashHandler handler = CrashHandler.getInstance(); handler.init(this); } }
相关文章推荐
- Android Thread.UncaughtExceptionHandler异常消息捕获
- 用Thread中的UncaughtExceptionHandler来处理未捕获的异常
- Thinking in Java学习笔记 Thread.UncaughtExceptionHandler接口实现捕获线程内异常
- android技术学习--Thread.UncaughtExceptionHandler捕获异常崩溃
- Android使用UncaughtExceptionHandler捕获全局异常
- Android Thread.UncaughtExceptionHandler捕获 .
- 【Android】 使用UncaughtExceptionHandler捕获全局异常
- Android 使用自定义UncaughtExceptionHandler捕获异常
- Android使用UncaughtExceptionHandler捕获全局异常(末个人修正)
- Android Thread.UncaughtExceptionHandler捕获
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- NSSetUncaughtExceptionHandler捕获程序异常
- 利用Android的UncaughtExceptionHandler捕获崩溃异常
- Android中使用UncaughtExceptionHandler来处理未捕获的异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android异常处理——UncaughtExceptionHandler捕获全局异常
- Thread.UnCaughtExceptionHandler接口,为每一个Thread对象创建一个异常处理器
- android应用开发-------------应用崩溃全局异常捕获处理(UncaughtExceptionHandler)