android中如果出现未捕获异常就会让应用程序crash掉,给用户的提示仅仅是该应用已崩溃,很不友好,自己定义一个UncaughtExceptionHanlder来捕获UI线程上的Exception,使用AlertDialog的方式展示出来,可以方便测试,也可以提升用户体验

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();
}

}

更多相关文章

  1. Android EditText 为空提示 密码隐藏
  2. 【转】android AsyncTask 为 多任务 多线程 解决方案
  3. Android:只需一句话解决读写权限授予后仍提示 Permission denied
  4. (8 Android) 用户界面UI设计
  5. 更新Anadroid SDK Tooks之后,Eclipse提示No update were found
  6. android 延时 不用另起线程或timertask
  7. Eclipse For Android 代码自动提示功能

随机推荐

  1. android中,rotate,translate,alpha属性分
  2. 【Android基础知识】选项菜单、上下文菜
  3. android JNI--- 搭建环境(1)
  4. Android中ContentProvider和Uri用法!!
  5. Android(安卓)关于嵌套listView时onItemC
  6. 工欲善其事必先利其器-Android(安卓)Stud
  7. Android(安卓)表单验证框架:AValidations
  8. Android(安卓)打测试包
  9. android adb 命令不能用
  10. CountDownTimer倒计时器的使用