android 捕捉app错误信息
16lz
2021-12-04
定义MyCrashHandler类,该类实现java.lang.Thread.UncaughtExceptionHandler接口。
import java.io.PrintWriter;import java.io.StringWriter;import java.io.Writer;import java.lang.Thread.UncaughtExceptionHandler;import org.json.JSONException;import org.json.JSONObject;import android.content.Context;import android.os.Build;import android.os.Looper;public class MyCrashHandler implements UncaughtExceptionHandler { private static MyCrashHandler myCrashHandler; private Context context; private MyCrashHandler() { } public static synchronized MyCrashHandler getInstance() { if (myCrashHandler != null) { return myCrashHandler; } else { myCrashHandler = new MyCrashHandler(); return myCrashHandler; } } public void init(Context context) { this.context = context; } public void uncaughtException(Thread thread, final Throwable arg1) { new Thread() { @Override public void run() { super.run(); Looper.prepare(); String errorinfo = getErrorInfo(arg1); //TODO 处理errorinfo Looper.loop(); } }.start(); //Thread.sleep()是为了等待上面处理errorinfo的线程结束。 try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } android.os.Process.killProcess(android.os.Process.myPid()); } private String getErrorInfo(Throwable arg1) { Writer writer = new StringWriter(); PrintWriter pw = new PrintWriter(writer); arg1.printStackTrace(pw); pw.close(); String error = writer.toString(); return error; }}使用MyCrashHandler捕获异常
MyCrashHandler handler = MyCrashHandler.getInstance(); handler.init(context.getApplicationContext()); Thread.setDefaultUncaughtExceptionHandler(handler);//将handler设置为默认
更多相关文章
- Android(安卓)后台线程调用前台线程的几种方法
- android 图片处理
- Android更新UI的五种方式
- android IntentService
- Android中的Handler的使用
- Android(安卓)创建线程执行任务
- Android(安卓)studio 多线程网络文件下载
- android 线程之创建一个子线程,并在UI线程中进行交互
- android之HandlerThread类的实现