<pre name="code" class="java">public class CrashHandler implements UncaughtExceptionHandler {
private static CrashHandler mCrashHandler =new CrashHandler();
private Thread.UncaughtExceptionHandler mDefaultHandler;
private Context mContext;
private PendingIntent intent;
@Override
public void uncaughtException(Thread thread, Throwable ex) {
// TODO Auto-generated method stub
Log.i("TTT","发生异常了呢。。。。。。。。。。。。。。。。。。");
sendHandler();
}
private void sendHandler() {
// TODO Auto-generated method stub
intent = PendingIntent.getActivity(mContext, 0, new Intent(mContext, MainActivity.class),Intent.FLAG_ACTIVITY_NEW_TASK);
AlarmManager mgr = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, intent);
System.exit(2);
}
private CrashHandler() {
// TODO Auto-generated constructor stub
}
public static CrashHandler getInstance(){
return mCrashHandler;
}
public void init(Context context){
mContext=context;
mDefaultHandler=Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this);
}
}
异常处理类 -------------------------- ↑
注册异常处理类 ↓
public class MyApplication extends Application {
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
CrashHandler crashHandler=CrashHandler.getInstance();
crashHandler.init(getApplicationContext());
}
}
人为制造异常
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("TTT","onCreatele了呢。。。。。。。。。。。。。。。。。。");
findViewById(R.id.btn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println(a.equals("123"));
}
});
}
log输出
01-02 02:11:55.980: I/TTT(16359): 发生异常了呢。。。。。。。。。。。。。。。。。。
01-02 02:11:58.200: I/TTT(16682): onCreatele了呢。。。。。。。。。。。。。。。。。。
01-02 02:12:44.110: I/TTT(16682): 发生异常了呢。。。。。。。。。。。。。。。。。。
01-02 02:12:46.280: I/TTT(17586): onCreatele了呢。。。。。。。。。。。。。。。。。。