在应用程序崩溃

时间:2018-01-17 22:42:21

标签: android crash crash-reports

我们正在编写一个实时错误处理网络平台,我试图找出什么是最好的方式通过http发布请求发送堆栈跟踪信息回到我们的服务器一旦Android应用程序崩溃发生。

我已经使用Thread.setDefaultUncaughtExceptionHandler回调来注册我们的回调处理程序,因此我们可以捕获堆栈跟踪。悬停我似乎无法在应用程序崩溃之后立即发出一个http请求,原因有些奇怪(行为非常奇怪,如果我在代码的错误处理程序部分发出请求,则根本不会调用响应/错误回调,所以我的猜测是http请求在那里调用时根本不可靠)。

我还尝试在全局异常处理程序中启动IntentService,以便我可以从那里发出请求,但是在应用程序崩溃后服务才会启动。我不知道下一步该尝试什么。

我需要能够立即将错误发送到我们的服务器,而不使用第三方崩溃报告服务(因为这是我们自己构建的)。关于我接下来可以尝试的任何提示?

2 个答案:

答案 0 :(得分:1)

@ CommonsWare的推荐ACRA是一个非常好的解决方案。

但关于:

  一旦android应用程序崩溃发生,

[...]将请求发回我们的服务器。   [...]我需要能够立即将错误发送到我们的服务器[...]

保存报告以便稍后发送,您可以强制应用程序重新启动,并在重新启动时使用干净的堆栈发送已保存的报告。

我使用类似Ereza/CustomActivityOnCrash库的东西来做它,它做了什么:

  

允许在应用崩溃时启动自定义活动,而不是显示讨厌的“不幸的是,X已停止”对话框。

所以基本上它会“杀死”你崩溃的应用程序,然后开始一个友好活动的新应用程序。

我用它来显示一条活动,告诉用户我们已经收到了崩溃,要求写下更多指示以帮助我们解决问题,以及是否希望在修复错误时联系用户。

答案 1 :(得分:0)

我最后在@CommonsWare的建议

之后使用了ACRA库