Skip to content

Commit

Permalink
Merge pull request #1690 from bugsnag/PLAT-8379/session-lifecycle-fix…
Browse files Browse the repository at this point in the history
…-sdk29

Only update session tracking after Activities have changed state
  • Loading branch information
lemnik committed May 20, 2022
2 parents e72a724 + b02c087 commit fbdd4d4
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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) {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public void startScenario() {
}

@Override
public void onActivityStarted(@NonNull Activity activity) {
public void onActivityResumed(@NonNull Activity activity) {
activate();
Bugsnag.notify(generateException());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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)
}
}
}

0 comments on commit fbdd4d4

Please sign in to comment.