Skip to content

Commit 5ad752a

Browse files
authored
Move fragment auto span finish to onFragmentStarted (#3424)
* moved fragment auto span finish to onFragmentStarted instead of onFragmentResumed to account for ViewPager2 behaviour
1 parent 133f63e commit 5ad752a

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### Fixes
66

7+
- Move fragment auto span finish to onFragmentStarted ([#3424](https://github.com/getsentry/sentry-java/pull/3424))
78
- Remove profiling timeout logic and disable profiling on API 21 ([#3478](https://github.com/getsentry/sentry-java/pull/3478))
89
- Properly reset metric flush flag on metric emission ([#3493](https://github.com/getsentry/sentry-java/pull/3493))
910

sentry-android-fragment/src/main/java/io/sentry/android/fragment/SentryFragmentLifecycleCallbacks.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,13 @@ class SentryFragmentLifecycleCallbacks(
9696

9797
override fun onFragmentStarted(fragmentManager: FragmentManager, fragment: Fragment) {
9898
addBreadcrumb(fragment, FragmentLifecycleState.STARTED)
99+
100+
// ViewPager2 locks background fragments to STARTED state
101+
stopTracing(fragment)
99102
}
100103

101104
override fun onFragmentResumed(fragmentManager: FragmentManager, fragment: Fragment) {
102105
addBreadcrumb(fragment, FragmentLifecycleState.RESUMED)
103-
104-
stopTracing(fragment)
105106
}
106107

107108
override fun onFragmentPaused(fragmentManager: FragmentManager, fragment: Fragment) {

sentry-android-fragment/src/test/java/io/sentry/android/fragment/SentryFragmentLifecycleCallbacksTest.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -229,11 +229,11 @@ class SentryFragmentLifecycleCallbacksTest {
229229
}
230230

231231
@Test
232-
fun `When fragment is resumed, it should stop tracing if enabled`() {
232+
fun `When fragment is started, it should stop tracing if enabled`() {
233233
val sut = fixture.getSut(enableAutoFragmentLifecycleTracing = true)
234234

235235
sut.onFragmentCreated(fixture.fragmentManager, fixture.fragment, savedInstanceState = null)
236-
sut.onFragmentResumed(fixture.fragmentManager, fixture.fragment)
236+
sut.onFragmentStarted(fixture.fragmentManager, fixture.fragment)
237237

238238
verify(fixture.span).finish(
239239
check {
@@ -243,12 +243,12 @@ class SentryFragmentLifecycleCallbacksTest {
243243
}
244244

245245
@Test
246-
fun `When fragment is resumed, it should stop tracing if enabled but keep status`() {
246+
fun `When fragment is started, it should stop tracing if enabled but keep status`() {
247247
val sut = fixture.getSut(enableAutoFragmentLifecycleTracing = true)
248248

249249
whenever(fixture.span.status).thenReturn(SpanStatus.ABORTED)
250250
sut.onFragmentCreated(fixture.fragmentManager, fixture.fragment, savedInstanceState = null)
251-
sut.onFragmentResumed(fixture.fragmentManager, fixture.fragment)
251+
sut.onFragmentStarted(fixture.fragmentManager, fixture.fragment)
252252

253253
verify(fixture.span).finish(
254254
check {

0 commit comments

Comments
 (0)