Android Fabric - send Caught Exceptions at custom interval

此生再无相见时 提交于 2019-12-07 13:44:38

问题


According to Fabric documentation Fabric doc to reduce user traffic, caught exceptions are sent only when the app launches -

Crashlytics processes exceptions on a dedicated background thread, so the performance impact to your app is minimal. To reduce your users’ network traffic, Crashlytics batches logged exceptions together and sends them the next time the app launches.

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

But for this particular app, the app will be always on, and is not intended to be relaunched. So the question is -

How to force the logs to be sent after some time, or on some event?


回答1:


Mike from Fabric here.

Currently our SDK doesn't offer a way to manually flush or push over the logs from a running Android app. Logged exceptions are sent on relaunch of the app.




回答2:


I've created some kind of simple solution. Now reports are sent after restarting app. What if user won't restart app because gets an error? It's possible.

So if we want to send logs after closing app, we need to create simple "sticky" service.

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

And lets put startService(new Intent(context, ReportService.class)); line in onCreate method of main activity.

Now when app will close, service will launch code again - Crashlytics will send logged exceptions.



来源:https://stackoverflow.com/questions/38347211/android-fabric-send-caught-exceptions-at-custom-interval

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!