package com.tcl.navigator.common; import java.lang.Thread.UncaughtExceptionHandler; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Looper; import android.util.Log; /** * * @author peizc 2012-11-23 * 默认处理机制 */ public class CrashHandler implements UncaughtExceptionHandler { private static final String FLAG = "CrashHandler"; private Context mContext; private static CrashHandler INSTANCE = new CrashHandler(); private Thread.UncaughtExceptionHandler mDefaultHandler; 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, final Throwable ex) { // TODO Auto-generated method stub Log.e(FLAG, ex.toString()); new Thread() { public void run() { Looper.prepare(); new AlertDialog.Builder(mContext).setTitle("提示") .setCancelable(false).setMessage("Error...\n" + ex.toString()) .setNeutralButton("I know",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub ex.printStackTrace(); System.exit(0); } }).create().show(); Looper.loop(); }; }.start(); } }
Android中的异常处理 CrashHandler
android中如果出现未捕获异常就会让应用程序crash掉,给用户的提示仅仅是该应用已崩溃,很不友好,自己定义一个UncaughtExceptionHanlder来捕获UI线程上的Exception,使用AlertDialog的方式展示出来,可以方便测试,也可以提升用户体验
猜你喜欢
转载自tmdpzc.iteye.com/blog/1734488
今日推荐
周排行