android CrashHandler
来源:互联网 发布:网络出版服务规定 编辑:程序博客网 时间:2024/06/05 09:39
Thread.setDefaultUncaughtExceptionHandler(new CrashHandler(getAppContext()));
public class CrashHandler implements Thread.UncaughtExceptionHandler { public static final int MAX_CRASH_LOG_LENGTH = 5000; private Context mAppContext; private Thread.UncaughtExceptionHandler mDefaultHandler; public CrashHandler(Context appContext) { mAppContext = appContext; mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler(); } @Override public void uncaughtException(Thread thread, Throwable ex) { if (ex == null) { return; } ex.printStackTrace(); Writer result = new StringWriter(); PrintWriter printWriter = new PrintWriter(result); ex.printStackTrace(printWriter); String callStack = result.toString(); if (callStack.length() > MAX_CRASH_LOG_LENGTH) { callStack = callStack.substring(0, MAX_CRASH_LOG_LENGTH); } String exceptionClass = (ex == null) ? "" : ex.getStackTrace()[0].getClassName(); String exceptionMethod = (ex == null) ? "" : ex.getStackTrace()[0].getMethodName(); final List<KeyValuePair> params = new ArrayList<>(); final Object syncLock = new Object(); Runnable runnable = new Runnable() { @Override public void run() { okhttp3.Request okRequest = new okhttp3.Request.Builder() .url(url) .post(KeyValuePairUtil.getRequestBody(params)) .build(); Call call = getOkHttpClient().newCall(okRequest); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { synchronized (syncLock) { syncLock.notify(); } } @Override public void onResponse(Call call, Response response) throws IOException { synchronized (syncLock) { syncLock.notify(); } } }); } }; if (Looper.myLooper() == null) { mUiHandler.post(runnable); } else { runnable.run(); } synchronized (syncLock) { try { syncLock.wait(); } catch (InterruptedException e) { } } if (mDefaultHandler != null) { mDefaultHandler.uncaughtException(thread, ex); } }}
0 0
- android CrashHandler
- android捕获全局异常,CrashHandler
- android捕获全局异常,CrashHandler
- Android全局异常捕获CrashHandler
- android捕获全局异常,CrashHandler
- android异常捕捉处理-CrashHandler
- Android全局异常捕获CrashHandler
- 手写CrashHandler实现UncaughtExceptionHandler拦截android异常
- 手写CrashHandler实现UncaughtExceptionHandler拦截android异常
- Android中CrashHandler默认异常处理机制
- Android 全局异常捕获之CrashHandler
- CrashHandler实现UncaughtExceptionHandler拦截android异常
- Android 全局异常捕获之CrashHandler
- Android CrashHandler 自定义崩溃异常捕获
- Android 全局异常捕获之CrashHandler
- Android 全局异常捕获之CrashHandler
- Android 全局异常捕获之CrashHandler
- CrashHandler实现UncaughtExceptionHandler拦截android异常
- @JoinColumn
- 项目3-点结构体(1)
- 健康栏目
- 获取注册表路径或判断是64位还是32位
- 命令行(批处理)设置环境变量
- android CrashHandler
- Win下搭建tensorflow的GPU版本
- MT6737 Android N 平台 Audio系统学习----ALSA Driver
- 浅析android应用增量升级
- include查找顺序
- 使用jackson解析时忽略新增字段
- uboot烧机
- Spring中的ThreadPoolTaskExecutor
- for循环动态创建表格