原文地址:http://blog.csdn.net/luck_apple/article/details/7768064
- package com.numob.david.util;
- import java.io.File;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.lang.Thread.UncaughtExceptionHandler;
- import java.util.Date;
- import android.os.Environment;
- import android.util.Log;
- /**
- * 全局处理异常.
- *
- */
- public class CrashHandler implements UncaughtExceptionHandler {
- /** CrashHandler实例 */
- private static CrashHandler instance;
- /** 获取CrashHandler实例 ,单例模式*/
- public static CrashHandler getInstance() {
- if (instance == null) {
- instance = new CrashHandler();
- }
- return instance;
- }
- @Override
- public void uncaughtException(Thread arg0, Throwable arg1) {
- // ScreenManager.getScreenManager().popActivity(Pay.activity);
- // arg0.stop();
- // arg0.destroy();
- String logdir ;
- if(Environment.getExternalStorageDirectory()!=null){
- logdir = Environment.getExternalStorageDirectory().getAbsolutePath()
- + File.separator + "snda"+File.separator+"log" ;
- File file = new File(logdir);
- boolean mkSuccess;
- if (!file.isDirectory()) {
- mkSuccess = file.mkdirs();
- if (!mkSuccess) {
- mkSuccess = file.mkdirs();
- }
- }
- try {
- FileWriter fw = new FileWriter(logdir+File.separator+"error.log",true);
- fw.write(new Date()+"\n");
- StackTraceElement[] stackTrace = arg1.getStackTrace();
- fw.write(arg1.getMessage() + "\n");
- for (int i = 0; i < stackTrace.length; i++) {
- fw.write("file:" + stackTrace[i].getFileName() + " class:" + stackTrace[i].getClassName()
- + " method:" + stackTrace[i].getMethodName() + " line:" + stackTrace[i].getLineNumber()
- + "\n");
- }
- fw.write("\n");
- fw.close();
- } catch (IOException e) {
- Log.e("crash handler", "load file failed...", e.getCause());
- }
- }
- arg1.printStackTrace();
- android.os.Process.killProcess(android.os.Process.myPid());
- }
- }
Activity或是Application中加入这样的代码 :
- CrashHandler crashHandler = CrashHandler.getInstance();
- crashHandler.init(getApplicationContext());
第二种方法:
package com.example.chl.myapplication;
import android.app.Application;
import android.os.SystemClock;
import android.util.Log;
/**
* Created by chl on 16-4-20.
*/
public class MyAppliction extends Application implements Thread.UncaughtExceptionHandler{
@Override
public void onCreate() {
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler(this);
}
@Override
public void uncaughtException(Thread thread, Throwable ex) {
Log.d("exception","程序休息下。。。。");
SystemClock.sleep(2000);
android.os.Process.killProcess(android.os.Process.myPid());
}
}