-
Notifications
You must be signed in to change notification settings - Fork 8
/
StartupServiceImpl.kt
50 lines (41 loc) · 1.57 KB
/
StartupServiceImpl.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package io.embrace.android.embracesdk.capture.startup
import io.embrace.android.embracesdk.internal.spans.SpanService
import io.embrace.android.embracesdk.worker.BackgroundWorker
internal class StartupServiceImpl(
private val spanService: SpanService,
@Suppress("UnusedPrivateMember")
private val backgroundWorker: BackgroundWorker
) : StartupService {
@Volatile
private var sdkInitStartMs: Long? = null
@Volatile
private var sdkInitEndMs: Long? = null
/**
* SDK startup time. Only set for cold start sessions.
*/
@Volatile
private var sdkStartupDurationMs: Long? = null
override fun setSdkStartupInfo(startTimeMs: Long, endTimeMs: Long, endedInForeground: Boolean, threadName: String?) {
if (sdkStartupDurationMs == null) {
spanService.recordCompletedSpan(
name = "sdk-init",
startTimeMs = startTimeMs,
endTimeMs = endTimeMs,
private = true,
attributes = mapOf(
"ended-in-foreground" to endedInForeground.toString(),
"thread-name" to (threadName ?: "unknown"),
),
)
}
sdkInitStartMs = startTimeMs
sdkInitEndMs = endTimeMs
sdkStartupDurationMs = endTimeMs - startTimeMs
}
override fun getSdkStartupDuration(coldStart: Boolean): Long? = when (coldStart) {
true -> sdkStartupDurationMs
false -> null
}
override fun getSdkInitStartMs(): Long? = sdkInitStartMs
override fun getSdkInitEndMs(): Long? = sdkInitEndMs
}