diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionLifecycleCallback.kt b/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionLifecycleCallback.kt index b43f860813..2299fa87c9 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionLifecycleCallback.kt +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionLifecycleCallback.kt @@ -2,17 +2,32 @@ package com.bugsnag.android import android.app.Activity import android.app.Application +import android.os.Build import android.os.Bundle internal class SessionLifecycleCallback( private val sessionTracker: SessionTracker ) : Application.ActivityLifecycleCallbacks { - override fun onActivityStarted(activity: Activity) = + override fun onActivityStarted(activity: Activity) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { + sessionTracker.onActivityStarted(activity.javaClass.simpleName) + } + } + + override fun onActivityPostStarted(activity: Activity) { sessionTracker.onActivityStarted(activity.javaClass.simpleName) + } + + override fun onActivityStopped(activity: Activity) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { + sessionTracker.onActivityStopped(activity.javaClass.simpleName) + } + } - override fun onActivityStopped(activity: Activity) = + override fun onActivityPostStopped(activity: Activity) { sessionTracker.onActivityStopped(activity.javaClass.simpleName) + } override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {} override fun onActivityResumed(activity: Activity) {} diff --git a/bugsnag-android-core/src/test/java/com/bugsnag/android/SessionLifecycleCallbackTest.kt b/bugsnag-android-core/src/test/java/com/bugsnag/android/SessionLifecycleCallbackTest.kt index b68462568c..508ba83489 100644 --- a/bugsnag-android-core/src/test/java/com/bugsnag/android/SessionLifecycleCallbackTest.kt +++ b/bugsnag-android-core/src/test/java/com/bugsnag/android/SessionLifecycleCallbackTest.kt @@ -31,9 +31,21 @@ internal class SessionLifecycleCallbackTest { verify(tracker, times(1)).onActivityStarted("Activity") } + @Test + fun onActivityPostStarted() { + callbacks.onActivityPostStarted(activity) + verify(tracker, times(1)).onActivityStarted("Activity") + } + @Test fun onActivityStopped() { callbacks.onActivityStopped(activity) verify(tracker, times(1)).onActivityStopped("Activity") } + + @Test + fun onActivityPostStopped() { + callbacks.onActivityPostStopped(activity) + verify(tracker, times(1)).onActivityStopped("Activity") + } } diff --git a/features/fixtures/mazerunner/cxx-scenarios-bugsnag/src/main/java/com/bugsnag/android/mazerunner/scenarios/CXXAutoContextScenario.java b/features/fixtures/mazerunner/cxx-scenarios-bugsnag/src/main/java/com/bugsnag/android/mazerunner/scenarios/CXXAutoContextScenario.java index 3a37ff22b1..45d9102f06 100644 --- a/features/fixtures/mazerunner/cxx-scenarios-bugsnag/src/main/java/com/bugsnag/android/mazerunner/scenarios/CXXAutoContextScenario.java +++ b/features/fixtures/mazerunner/cxx-scenarios-bugsnag/src/main/java/com/bugsnag/android/mazerunner/scenarios/CXXAutoContextScenario.java @@ -33,7 +33,7 @@ public void startScenario() { } @Override - public void onActivityStarted(@NonNull Activity activity) { + public void onActivityResumed(@NonNull Activity activity) { activate(); Bugsnag.notify(generateException()); } diff --git a/features/fixtures/mazerunner/cxx-scenarios/src/main/java/com/bugsnag/android/mazerunner/scenarios/CXXDelayedCrashScenario.kt b/features/fixtures/mazerunner/cxx-scenarios/src/main/java/com/bugsnag/android/mazerunner/scenarios/CXXDelayedCrashScenario.kt index 3a7cb7d7cf..17dee5908d 100644 --- a/features/fixtures/mazerunner/cxx-scenarios/src/main/java/com/bugsnag/android/mazerunner/scenarios/CXXDelayedCrashScenario.kt +++ b/features/fixtures/mazerunner/cxx-scenarios/src/main/java/com/bugsnag/android/mazerunner/scenarios/CXXDelayedCrashScenario.kt @@ -2,6 +2,8 @@ package com.bugsnag.android.mazerunner.scenarios import android.app.Activity import android.content.Context +import android.os.Handler +import android.os.Looper import com.bugsnag.android.Configuration import com.bugsnag.android.mazerunner.log @@ -25,8 +27,9 @@ class CXXDelayedCrashScenario( } override fun onActivityStopped(activity: Activity) { - super.onActivityStopped(activity) - log("App sent to background, triggering crash.") - activate(405) + Handler(Looper.getMainLooper()).post { + log("App sent to background, triggering crash.") + activate(405) + } } }