Skip to content

Commit ac0c5d5

Browse files
Merge pull request #3030 from DataDog/aleksandr-gringauz/RUM-13071/stop-using-process-importance-app-launch
RUM-13071: Stop using process importance when distinguishing between cold and warm launches
2 parents 9794bcb + 718e2bf commit ac0c5d5

File tree

3 files changed

+12
-70
lines changed

3 files changed

+12
-70
lines changed

features/dd-sdk-android-rum/src/main/kotlin/com/datadog/android/rum/internal/startup/RumAppStartupDetector.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ package com.datadog.android.rum.internal.startup
99
import android.app.Application
1010
import com.datadog.android.core.InternalSdkCore
1111
import com.datadog.android.core.internal.system.BuildSdkVersionProvider
12-
import com.datadog.android.rum.DdRumContentProvider
1312

1413
internal interface RumAppStartupDetector {
1514
interface Listener {
@@ -28,7 +27,6 @@ internal interface RumAppStartupDetector {
2827
application = application,
2928
buildSdkVersionProvider = BuildSdkVersionProvider.DEFAULT,
3029
appStartupTimeProviderNs = { sdkCore.appStartTimeNs },
31-
processImportanceProvider = { DdRumContentProvider.processImportance },
3230
timeProviderNs = { System.nanoTime() },
3331
listener
3432
)

features/dd-sdk-android-rum/src/main/kotlin/com/datadog/android/rum/internal/startup/RumAppStartupDetectorImpl.kt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
package com.datadog.android.rum.internal.startup
88

99
import android.app.Activity
10-
import android.app.ActivityManager
1110
import android.app.Application
1211
import android.os.Build
1312
import android.os.Bundle
@@ -19,7 +18,6 @@ internal class RumAppStartupDetectorImpl(
1918
private val application: Application,
2019
private val buildSdkVersionProvider: BuildSdkVersionProvider,
2120
private val appStartupTimeProviderNs: () -> Long,
22-
private val processImportanceProvider: () -> Int,
2321
private val timeProviderNs: () -> Long,
2422
private val listener: RumAppStartupDetector.Listener
2523
) : RumAppStartupDetector, Application.ActivityLifecycleCallbacks {
@@ -73,15 +71,12 @@ internal class RumAppStartupDetectorImpl(
7371
if (numberOfActivities == 1 && !isChangingConfigurations) {
7472
val processStartTimeNs = appStartupTimeProviderNs()
7573

76-
val processStartedInForeground =
77-
processImportanceProvider() == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
78-
7974
val gapNs = nowNs - processStartTimeNs
8075
val hasSavedInstanceStateBundle = savedInstanceState != null
8176
val weakActivity = WeakReference(activity)
8277

8378
val scenario = if (isFirstActivityForProcess) {
84-
if (!processStartedInForeground || gapNs > START_GAP_THRESHOLD_NS) {
79+
if (gapNs > START_GAP_THRESHOLD_NS) {
8580
RumStartupScenario.WarmFirstActivity(
8681
initialTimeNs = nowNs,
8782
hasSavedInstanceStateBundle = hasSavedInstanceStateBundle,

features/dd-sdk-android-rum/src/test/kotlin/com/datadog/android/rum/internal/startup/RumAppStartupDetectorImplTest.kt

Lines changed: 11 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
package com.datadog.android.rum.internal.startup
88

99
import android.app.Activity
10-
import android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_CACHED
11-
import android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
1210
import android.app.Application
1311
import android.os.Build
1412
import android.os.Bundle
@@ -75,22 +73,18 @@ internal class RumAppStartupDetectorImplTest {
7573

7674
@Test
7775
fun `M registerActivityLifecycleCallbacks W RumAppStartupDetector constructor`() {
78-
createDetector(
79-
processImportance = IMPORTANCE_FOREGROUND
80-
)
76+
createDetector()
8177
verify(application).registerActivityLifecycleCallbacks(any())
8278
verifyNoMoreInteractions(application)
8379
}
8480

8581
@Test
86-
fun `M detect Cold scenario W RumAppStartupDetector {IMPORTANCE_FOREGROUND and small gap}`(
82+
fun `M detect Cold scenario W RumAppStartupDetector {small gap}`(
8783
forge: Forge,
8884
@BoolForgery hasSavedInstanceStateBundle: Boolean
8985
) {
9086
// Given
91-
val detector = createDetector(
92-
processImportance = IMPORTANCE_FOREGROUND
93-
)
87+
val detector = createDetector()
9488

9589
currentTime += 3.seconds
9690

@@ -115,45 +109,11 @@ internal class RumAppStartupDetectorImplTest {
115109
}
116110

117111
@Test
118-
fun `M detect WarmFirstActivity scenario W RumAppStartupDetector {IMPORTANCE_CACHED and small gap}`(
112+
fun `M detect WarmFirstActivity scenario W RumAppStartupDetector {large gap}`(
119113
forge: Forge,
120114
@BoolForgery hasSavedInstanceStateBundle: Boolean
121115
) {
122-
// Given
123-
val detector = createDetector(
124-
processImportance = IMPORTANCE_CACHED
125-
)
126-
127-
currentTime += 3.seconds
128-
129-
// When
130-
triggerBeforeCreated(
131-
forge = forge,
132-
detector = detector,
133-
activity = activity,
134-
hasSavedInstanceStateBundle = hasSavedInstanceStateBundle
135-
)
136-
137-
// Then
138-
listener.verifyScenarioDetected(
139-
RumStartupScenario.WarmFirstActivity(
140-
initialTimeNs = currentTime.inWholeNanoseconds,
141-
hasSavedInstanceStateBundle = hasSavedInstanceStateBundle,
142-
activity = activity.wrapWeak(),
143-
appStartActivityOnCreateGapNs = 3.seconds.inWholeNanoseconds
144-
)
145-
)
146-
verifyNoMoreInteractions(listener)
147-
}
148-
149-
@Test
150-
fun `M detect WarmFirstActivity scenario W RumAppStartupDetector {IMPORTANCE_FOREGROUND and large gap}`(
151-
forge: Forge,
152-
@BoolForgery hasSavedInstanceStateBundle: Boolean
153-
) {
154-
val detector = createDetector(
155-
processImportance = IMPORTANCE_FOREGROUND
156-
)
116+
val detector = createDetector()
157117

158118
currentTime += 6.seconds
159119
triggerBeforeCreated(
@@ -181,9 +141,7 @@ internal class RumAppStartupDetectorImplTest {
181141
@BoolForgery hasSavedInstanceStateBundle2: Boolean
182142
) {
183143
// Given
184-
val detector = createDetector(
185-
processImportance = IMPORTANCE_FOREGROUND
186-
)
144+
val detector = createDetector()
187145

188146
currentTime += 3.seconds
189147

@@ -234,9 +192,7 @@ internal class RumAppStartupDetectorImplTest {
234192
@BoolForgery hasSavedInstanceStateBundle: Boolean
235193
) {
236194
// Given
237-
val detector = createDetector(
238-
processImportance = IMPORTANCE_FOREGROUND
239-
)
195+
val detector = createDetector()
240196

241197
currentTime += 3.seconds
242198

@@ -278,9 +234,7 @@ internal class RumAppStartupDetectorImplTest {
278234
@BoolForgery hasSavedInstanceStateBundle2: Boolean
279235
) {
280236
// Given
281-
val detector = createDetector(
282-
processImportance = IMPORTANCE_FOREGROUND
283-
)
237+
val detector = createDetector()
284238

285239
currentTime += 3.seconds
286240

@@ -325,9 +279,7 @@ internal class RumAppStartupDetectorImplTest {
325279
@BoolForgery hasSavedInstanceStateBundle2: Boolean
326280
) {
327281
// Given
328-
val detector = createDetector(
329-
processImportance = IMPORTANCE_FOREGROUND
330-
)
282+
val detector = createDetector()
331283

332284
currentTime += 3.seconds
333285

@@ -386,9 +338,7 @@ internal class RumAppStartupDetectorImplTest {
386338
@BoolForgery hasSavedInstanceStateBundle3: Boolean
387339
) {
388340
// Given
389-
val detector = createDetector(
390-
processImportance = IMPORTANCE_FOREGROUND
391-
)
341+
val detector = createDetector()
392342

393343
currentTime += 3.seconds
394344

@@ -458,14 +408,13 @@ internal class RumAppStartupDetectorImplTest {
458408
verifyNoMoreInteractions(listener)
459409
}
460410

461-
private fun createDetector(processImportance: Int): RumAppStartupDetectorImpl {
411+
private fun createDetector(): RumAppStartupDetectorImpl {
462412
whenever(buildSdkVersionProvider.version) doReturn fakeBuildSdkVersion
463413

464414
val detector = RumAppStartupDetectorImpl(
465415
application = application,
466416
buildSdkVersionProvider = buildSdkVersionProvider,
467417
appStartupTimeProviderNs = { 0 },
468-
processImportanceProvider = { processImportance },
469418
timeProviderNs = { currentTime.inWholeNanoseconds },
470419
listener
471420
)

0 commit comments

Comments
 (0)