Android - Crashlytics,在崩溃期间运行代码

时间:2017-04-07 15:25:18

标签: android error-handling crashlytics

我遇到了一个糟糕的崩溃案例,原因是一些Asyncs在SQLite中以不正确的顺序执行操作并且事情爆炸了。我花了一些时间来调试所有这些,并且访问内部数据库会有很大帮助。我知道如何在开发设备上访问该内部数据库,但万一出现问题,我希望能够获得该数据库的实例,无论该设备如何。对于错误报告,我使用的是Crashlytics。

问题是:在崩溃收集/报告期间,有没有办法让Crashlytics运行一段代码(方法等)? (例如,获取数据库副本并通过电子邮件发送或其他内容)

无法在文档中找到任何内容。

3 个答案:

答案 0 :(得分:2)

可以在Crashlytics记录崩溃之前获得控制权。你基本上必须创建自己的未捕获异常处理程序并调用Crashlytics'处理程序从那里。在你的Application类中有这样的东西:

private UncaughtExceptionHandler originalUncaughtHandler;

@Override
public void onCreate() {
    // initialize Fabric with Crashlytics

    originalUncaughtHandler = Thread.getDefaultUncaughtExceptionHandler();
    Thread.setDefaultUncaughtExceptionHandler(this);

    // do the rest of your oncreate stuff
}

@Override
public void uncaughtException(Thread thread, Throwable ex) {
    // do your work to add data to Crashlytics log

    originalUncaughtHandler.uncaughtException(thread, ex);
}

答案 1 :(得分:0)

不,你不能。但是,您可以在启动Crashlytics之前设置某些值。就像在参数中添加值以识别用户一样。就像在创建崩溃性会话之前添加用户的电子邮件ID一样。

答案 2 :(得分:0)

正如@ basu-singh所说,您可以为崩溃添加上下文,请参阅https://docs.fabric.io/android/crashlytics/enhanced-reports.html

或者您可以使用自己的UncaughtExceptionHandler,然后调用Crashlytics。虽然您的代码需要额外安全!