Android Fabric - 以自定义间隔发送捕获的异常

Posted

技术标签:

【中文标题】Android Fabric - 以自定义间隔发送捕获的异常【英文标题】:Android Fabric - send Caught Exceptions at custom interval 【发布时间】:2016-07-13 09:05:52 【问题描述】:

根据 Fabric 文档Fabric doc 减少用户流量,捕获的异常仅在应用启动时发送 -

Crashlytics 在专用后台线程上处理异常,因此对您的应用的性能影响很小。为了减少您的用户的网络流量,Crashlytics 将记录的异常批处理在一起,并在应用下次启动时发送。

try 
  myMethodThatThrows();
 catch (Exception e) 
  Crashlytics.logException(e);
  // handle your exception here!

但是对于这个特定的应用程序,该应用程序将始终打开,并且不打算重新启动。所以问题是-

如何强制在一段时间后或某个事件时发送日志?

【问题讨论】:

【参考方案1】:

来自 Fabric 的 Mike。

目前,我们的 SDK 不提供从正在运行的 android 应用手动刷新或推送日志的方法。记录的异常会在应用重新启动时发送。

【讨论】:

你知道串行发送日志的限制吗?我已经发送了两个间隔为 3 秒的 Crashlytics.logException(e),但最后一次出现在 Fabric 控制台中。 快速发送的日志应该不会出现任何问题。我建议创建一个新的 SO 帖子或在 TwitterCommunity 上提问。【参考方案2】:

我创建了一些简单的解决方案。现在报告在重新启动应用程序后发送。如果用户不会重新启动应用程序因为 收到错误怎么办?有可能。

所以如果我们想在关闭应用后发送日志,我们需要创建简单的“粘性”服务。

public class ReportService extends Service 
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) 
        System.err.println("ReportService refresh");
        return START_STICKY;
    

让我们将startService(new Intent(context, ReportService.class)); 行放在主要活动的onCreate 方法中。

现在,当应用关闭时,服务将再次启动代码 - Crashlytics 将发送记录的异常。

【讨论】:

以上是关于Android Fabric - 以自定义间隔发送捕获的异常的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 wordpress 以自定义表单提交之前获取图像 url 并发送邮件?

如何停止以自定义意图启动的 Android 服务

Azure Service Fabric - 如何配置容器被强制终止之前的时间间隔

Linux如何在RAM缓冲区中录制声音并以自定义延迟播放音频

Fabric 没有从过去几天发送崩溃邮件

您可以在多大程度上自定义 Fabric 的 Digits 在 Android 上的流程、外观和感觉?