Acra 未在 Android 5 时自动发送报告(棒棒糖)

Acra not sending reports automatically in Android 5 (lollipop)

我正在使用 ACRA,并且我创建了一个 CustomReportSender。在此 class 中,我实现了发送方法,我对报告进行了一些自定义,然后连接到自定义后端 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,这意味着用户得到显示消息,然后自动发送崩溃报告(无需用户交互)。一切正常,报告被发送到 beckend,我可以在那里分析它们,直到最近,当我发现这对 Android 5.X 不起作用时。但是它仍然适用于所有其他版本的 android 直到 4.4.4.

我测试了,但是日志中没有错误或问题。在 ACRA 设法发送崩溃报告之前,lollipop 似乎正在终止整个进程。但是我虽然在下一个应用程序启动时发送了崩溃报告,但这也没有发生。还有其他人有这个问题吗?我该如何克服这个问题?

我还发现的一点是,如果我将模式设置为对话,然后用户确认发送,那么就可以了。任何帮助将不胜感激。

我在 LogCat 中看到的最后一件事。

Android 框架有可能在您的应用有机会发送报告之前终止您的应用。

但是 ACRA 在下次应用程序启动时发送任何未发送的报告。

在启动时查看您的 ACRA 日志(在未发送的崩溃之后)。您应该会看到它正在尝试发送。

看起来问题是,在我自己的 reportSender 的发送方法中,我创建了一个新的 Thread() 并且不知何故,Android 只是在那里切断应用程序并停止发送。 我的解决方案:线程围绕着试图发送崩溃报告的代码。在我删除 Thread 之后它就起作用了。