@@ -9,13 +9,16 @@ package com.datadog.android.rum.internal.monitor
9
9
import android.app.Activity
10
10
import android.app.ActivityManager
11
11
import android.os.Handler
12
+ import androidx.annotation.WorkerThread
12
13
import com.datadog.android.api.InternalLogger
13
14
import com.datadog.android.api.feature.Feature
15
+ import com.datadog.android.api.feature.measureMethodCallPerf
14
16
import com.datadog.android.api.storage.DataWriter
15
17
import com.datadog.android.core.InternalSdkCore
16
18
import com.datadog.android.core.feature.event.ThreadDump
17
19
import com.datadog.android.core.internal.net.FirstPartyHostHeaderTypeResolver
18
20
import com.datadog.android.core.internal.utils.executeSafe
21
+ import com.datadog.android.core.metrics.MethodCallSamplingRate
19
22
import com.datadog.android.internal.telemetry.InternalTelemetryEvent
20
23
import com.datadog.android.internal.thread.NamedRunnable
21
24
import com.datadog.android.rum.DdRumContentProvider
@@ -690,7 +693,7 @@ internal class DatadogRumMonitor(
690
693
sdkCore.internalLogger,
691
694
NamedRunnable (" ${event::class .simpleName} " ) {
692
695
synchronized(rootScope) {
693
- rootScope.handleEvent (event, writer )
696
+ handleEventWithMethodCallPerf (event)
694
697
notifyDebugListenerWithState()
695
698
}
696
699
handler.postDelayed(keepAliveRunnable, KEEP_ALIVE_MS )
@@ -700,6 +703,17 @@ internal class DatadogRumMonitor(
700
703
}
701
704
}
702
705
706
+ @WorkerThread
707
+ private fun handleEventWithMethodCallPerf (event : RumRawEvent ) {
708
+ sdkCore.internalLogger.measureMethodCallPerf(
709
+ javaClass,
710
+ " RUM event - ${event::class .simpleName ? : " Unknown" } " ,
711
+ MethodCallSamplingRate .RARE .rate
712
+ ) {
713
+ rootScope.handleEvent(event, writer)
714
+ }
715
+ }
716
+
703
717
/* *
704
718
* Wait for any pending events. This is mostly for integration tests to ensure that the
705
719
* RUM context is in the correct state before proceeding.
0 commit comments