前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何监控app的崩溃

如何监控app的崩溃

作者头像
PhoenixZheng
发布2018-08-07 16:46:49
1.4K0
发布2018-08-07 16:46:49
举报

当我们的app上线到应用市场之后,它发生了什么崩溃其实我们是不知道的。今天我们介绍一个方法来监控和收集用户手机上的异常崩溃同时上报给我们自己。

CrashHandler

在Thread的代码中,有一个接口

代码语言:javascript
复制
@FunctionalInterface
public interface UncaughtExceptionHandler {
    /**
     * Method invoked when the given thread terminates due to the
     * given uncaught exception.
     * <p>Any exception thrown by this method will be ignored by the
     * Java Virtual Machine.
     * @param t the thread
     * @param e the exception
     */
    void uncaughtException(Thread t, Throwable e);
}

` 当线程崩溃的时候,会回调这个接口来通知当前发生了什么异常。这就是我们用来获取崩溃的方法。通常我们会定义一个CrashHandler,然后在Application初始化时注入这个Handler,这样在程序崩溃的时候就可以抓到异常了。

具体实现
代码语言:javascript
复制
public class CrashHandler implements UncaughtExceptionHandler {

    private static CrashHandler instance;

    public static CrashHandler getInstance() {
        if (instance == null) {
            instance = new CrashHandler();
        }
        return instance;
    }

    public void init(Context ctx) {
        Thread.setDefaultUncaughtExceptionHandler(this);
    }

    /**
     * 核心方法,当程序crash 会回调此方法, Throwable中存放这错误日志
     */
    @Override
    public void uncaughtException(Thread arg0, Throwable arg1) {
        //收集并反馈异常
        android.os.Process.killProcess(android.os.Process.myPid());
    }

}

使用很简单,在Application中调用就行,

代码语言:javascript
复制
CrashHandler crashHandler = CrashHandler.getInstance();
        crashHandler.init(getApplicationContext());

这样一来就可以在uncaughtException中做我们想做的事情,比如写入文件,或者上传到我们的服务器。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Android每日一讲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CrashHandler
  • 具体实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档