我正在使用ACRA,我创建了一个 CustomReportSender 。在这个类中,我实现了send方法,我在其中自定义报告,然后连接到自定义后端URL并发送报告。
public void send(Context cnt, CrashReportData report) throws ReportSenderException {
//code for customizing crash report
HttpSender sender = new HttpSender(Method.POST, Type.JSON, urlToSend, null);
sender.send(cnt,report);
}
发送报告的方法是TOAST,这意味着用户获得显示的Toast消息,然后自动发送崩溃报告(无需用户交互)。一切都运行良好,报告被发送到我可以分析它们的地方,直到最近,当我发现这对Android 5.X不起作用时。但是它仍适用于所有其他版本的android,直到4.4.4。
我测试了它,但没有日志中的错误或问题。在ACRA设法发送崩溃报告之前,看起来棒棒糖正在杀死整个过程。但是,我会在下一个应用程序启动时发送崩溃报告,但这也不会发生。还有其他人有这个问题吗?我怎么能克服这个?
我还发现的一点是,如果我将模式设置为对话框,然后用户确认发送,那么它可以工作。任何帮助都会非常感激。
我在LogCat中看到的最后一些事情。
答案 0 :(得分:0)
Android Framework可能会在有机会发送报告之前终止您的应用。
但ACRA 将在下次应用启动时发送任何未发送的报告。
在启动时查看您的ACRA日志(在未发生的崩溃之后)。你应该看到它试图发送。
答案 1 :(得分:0)
看起来问题是,在我自己的reportSender的send方法中,我创建了一个新的Thread(),不知怎的,因此,Android只是在那里切断应用程序并停止发送。 在我的案例中的解决方案:线程是围绕试图发送崩溃报告的代码。删除线程后,它就可以工作了。