|
| 1 | +#if ANDROID |
| 2 | +using Microsoft.Maui.LifecycleEvents; |
| 3 | +using Activity = Android.App.Activity; |
| 4 | + |
| 5 | +namespace Sentry.Maui.Internal; |
| 6 | + |
| 7 | +// Capture Android Activity lifecycle events as breadcrumbs. |
| 8 | +// See: https://github.com/getsentry/sentry-java/blob/ab8a72db41b2e5c66e60cef3102294dddba90b20/sentry-android-core/src/main/java/io/sentry/android/core/ActivityBreadcrumbsIntegration.java |
| 9 | +internal static class AndroidActivityBreadcrumbsIntegration |
| 10 | +{ |
| 11 | + public static void Register(IAndroidLifecycleBuilder lifecycle) |
| 12 | + { |
| 13 | + lifecycle.OnCreate((activity, _) => AddBreadcrumb(activity, "created")); |
| 14 | + lifecycle.OnStart(activity => AddBreadcrumb(activity, "started")); |
| 15 | + lifecycle.OnResume(activity => AddBreadcrumb(activity, "resumed")); |
| 16 | + lifecycle.OnPause(activity => AddBreadcrumb(activity, "paused")); |
| 17 | + lifecycle.OnStop(activity => AddBreadcrumb(activity, "stopped")); |
| 18 | + lifecycle.OnSaveInstanceState((activity, _) => AddBreadcrumb(activity, "saveInstanceState")); |
| 19 | + lifecycle.OnDestroy(activity => AddBreadcrumb(activity, "destroyed")); |
| 20 | + } |
| 21 | + |
| 22 | + private static void AddBreadcrumb(Activity activity, string state) |
| 23 | + { |
| 24 | + var breadcrumb = new Breadcrumb( |
| 25 | + DateTimeOffset.UtcNow, |
| 26 | + message: null, |
| 27 | + type: MauiEventsBinder.NavigationType, |
| 28 | + data: new Dictionary<string, string> |
| 29 | + { |
| 30 | + { "screen", activity.Class.SimpleName }, |
| 31 | + { "state", state } |
| 32 | + }, |
| 33 | + category: MauiEventsBinder.LifecycleCategory, |
| 34 | + level: BreadcrumbLevel.Info |
| 35 | + ); |
| 36 | + SentrySdk.AddBreadcrumb(breadcrumb); |
| 37 | + } |
| 38 | +} |
| 39 | +#endif |
0 commit comments