File tree Expand file tree Collapse file tree 5 files changed +38
-4
lines changed
android-agent/src/main/kotlin/io/opentelemetry/android/agent/session
src/main/java/io/opentelemetry/android/common/internal/tools/time
instrumentation/activity/src/main/java/io/opentelemetry/android/instrumentation/activity/startup Expand file tree Collapse file tree 5 files changed +38
-4
lines changed Original file line number Diff line number Diff line change 66package io.opentelemetry.android.agent.session
77
88import io.opentelemetry.android.Incubating
9+ import io.opentelemetry.android.common.internal.tools.time.AndroidClock
910import io.opentelemetry.android.internal.services.applifecycle.ApplicationStateListener
1011import io.opentelemetry.sdk.common.Clock
1112import kotlin.time.Duration
@@ -37,7 +38,7 @@ internal class SessionIdTimeoutHandler(
3738 // for testing
3839 @OptIn(Incubating ::class )
3940 internal constructor (sessionConfig: SessionConfig ) : this (
40- Clock .getDefault() ,
41+ AndroidClock . INSTANCE ,
4142 sessionConfig.backgroundInactivityTimeout,
4243 )
4344
Original file line number Diff line number Diff line change 66package io.opentelemetry.android.agent.session
77
88import io.opentelemetry.android.Incubating
9+ import io.opentelemetry.android.common.internal.tools.time.AndroidClock
910import io.opentelemetry.android.session.Session
1011import io.opentelemetry.android.session.SessionObserver
1112import io.opentelemetry.android.session.SessionProvider
@@ -16,7 +17,7 @@ import kotlin.random.Random
1617import kotlin.time.Duration
1718
1819internal class SessionManager (
19- private val clock : Clock = Clock .getDefault() ,
20+ private val clock : Clock = AndroidClock . INSTANCE ,
2021 private val sessionStorage : SessionStorage = InMemorySessionStorage (),
2122 private val timeoutHandler : SessionIdTimeoutHandler ,
2223 private val idGenerator : SessionIdGenerator = DefaultSessionIdGenerator (Random .Default ),
Original file line number Diff line number Diff line change @@ -87,6 +87,18 @@ public final class io/opentelemetry/android/common/internal/features/networkattr
8787 public static fun values ()[Lio/opentelemetry/android/common/internal/features/networkattributes/data/NetworkState;
8888}
8989
90+ public final class io/opentelemetry/android/common/internal/tools/time/AndroidClock : io/opentelemetry/sdk/common/Clock {
91+ public static final field Companion Lio/opentelemetry/android/common/internal/tools/time/AndroidClock$Companion;
92+ public fun <init> ()V
93+ public static final fun getINSTANCE ()Lio/opentelemetry/android/common/internal/tools/time/AndroidClock;
94+ public fun nanoTime ()J
95+ public fun now ()J
96+ }
97+
98+ public final class io/opentelemetry/android/common/internal/tools/time/AndroidClock$Companion {
99+ public final fun getINSTANCE ()Lio/opentelemetry/android/common/internal/tools/time/AndroidClock;
100+ }
101+
90102public abstract interface class io/opentelemetry/android/common/internal/tools/time/SystemTime {
91103 public static final field Companion Lio/opentelemetry/android/common/internal/tools/time/SystemTime$Companion;
92104 public abstract fun getCurrentTimeMillis ()J
Original file line number Diff line number Diff line change 1+ /*
2+ * Copyright The OpenTelemetry Authors
3+ * SPDX-License-Identifier: Apache-2.0
4+ */
5+
6+ package io.opentelemetry.android.common.internal.tools.time
7+
8+ import android.os.SystemClock
9+ import io.opentelemetry.sdk.common.Clock
10+ import javax.annotation.concurrent.ThreadSafe
11+
12+ @ThreadSafe
13+ class AndroidClock : Clock by Clock .getDefault() {
14+ override fun nanoTime (): Long = SystemClock .elapsedRealtimeNanos()
15+
16+ companion object {
17+ @JvmStatic
18+ val INSTANCE = AndroidClock ()
19+ }
20+ }
Original file line number Diff line number Diff line change 1313import androidx .annotation .NonNull ;
1414import androidx .annotation .Nullable ;
1515import io .opentelemetry .android .common .RumConstants ;
16+ import io .opentelemetry .android .common .internal .tools .time .AndroidClock ;
1617import io .opentelemetry .android .internal .services .visiblescreen .activities .DefaultingActivityLifecycleCallbacks ;
1718import io .opentelemetry .api .trace .Span ;
1819import io .opentelemetry .api .trace .Tracer ;
19- import io .opentelemetry .sdk .common .Clock ;
2020import java .util .concurrent .TimeUnit ;
2121
2222public class AppStartupTimer {
@@ -26,7 +26,7 @@ public class AppStartupTimer {
2626 private static final long MAX_TIME_TO_UI_INIT = TimeUnit .MINUTES .toNanos (1 );
2727
2828 // exposed so it can be used for the rest of the startup sequence timing.
29- private final AnchoredClock startupClock = AnchoredClock .create (Clock . getDefault ());
29+ private final AnchoredClock startupClock = AnchoredClock .create (AndroidClock . getINSTANCE ());
3030 private final long firstPossibleTimestamp = startupClock .now ();
3131 @ Nullable private volatile Span overallAppStartSpan = null ;
3232 @ Nullable private volatile Runnable completionCallback = null ;
You can’t perform that action at this time.
0 commit comments