我们正在编写一个实时错误处理Web平台,并且我试图找出什么是最好的方法,以便在android应用程序崩溃后立即通过http发布请求将堆栈跟踪信息发送回我们的服务器。

我已经使用Thread.setDefaultUncaughtExceptionHandler回调注册了我们的回调处理程序,因此我们可以捕获堆栈跟踪。悬停后,由于某种奇怪的原因,我似乎无法在应用程序崩溃后立即发出http请求(行为非常怪异,如果我在代码的错误处理程序中提出请求,则根本不会调用响应/错误回调,因此,我的猜测是,如果在其中调用http请求,则根本不可靠)。

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

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

最佳答案

@CommonsWare的建议ACRA是一个非常好的解决方案。

但是关于:



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

我使用了Ereza/CustomActivityOnCrash库之类的东西来做它,它的作用是:



因此,基本上,它“杀死”了崩溃的应用程序,然后通过友好的 Activity 开始一个新的应用程序。

我用它来显示一个 Activity ,告诉用户我们已经收到了崩溃信息,并要求写下更多说明来帮助我们解决问题以及是否希望在错误修复时与用户联系。

10-07 19:32
查看更多