Skip to content

Commit 093c050

Browse files
adinauerclaude
andcommitted
perf(android): Use TimeZone.getDefault for device timezone
Avoid constructing a Calendar only to read the default device timezone. The locale passed to Calendar does not affect the timezone value, so TimeZone.getDefault returns the same value with less work during device context collection. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 06fb38b commit 093c050

2 files changed

Lines changed: 10 additions & 11 deletions

File tree

sentry-android-core/src/main/java/io/sentry/android/core/DeviceInfoUtil.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import android.os.BatteryManager;
1111
import android.os.Build;
1212
import android.os.Environment;
13-
import android.os.LocaleList;
1413
import android.os.StatFs;
1514
import android.os.SystemClock;
1615
import android.util.DisplayMetrics;
@@ -25,7 +24,6 @@
2524
import io.sentry.protocol.OperatingSystem;
2625
import io.sentry.util.AutoClosableReentrantLock;
2726
import java.io.File;
28-
import java.util.Calendar;
2927
import java.util.Collections;
3028
import java.util.Date;
3129
import java.util.List;
@@ -254,17 +252,9 @@ private void setDeviceIO(
254252
}
255253
}
256254

257-
@SuppressWarnings("NewApi")
258255
@NotNull
259256
private TimeZone getTimeZone() {
260-
if (buildInfoProvider.getSdkInfoVersion() >= Build.VERSION_CODES.N) {
261-
LocaleList locales = context.getResources().getConfiguration().getLocales();
262-
if (!locales.isEmpty()) {
263-
Locale locale = locales.get(0);
264-
return Calendar.getInstance(locale).getTimeZone();
265-
}
266-
}
267-
return Calendar.getInstance().getTimeZone();
257+
return TimeZone.getDefault();
268258
}
269259

270260
@SuppressWarnings("JdkObsolete")

sentry-android-core/src/test/java/io/sentry/android/core/DeviceInfoUtilTest.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import android.os.BatteryManager
66
import androidx.test.core.app.ApplicationProvider
77
import androidx.test.ext.junit.runners.AndroidJUnit4
88
import io.sentry.android.core.internal.util.CpuInfoUtils
9+
import java.util.TimeZone
910
import kotlin.test.BeforeTest
1011
import kotlin.test.Test
1112
import kotlin.test.assertEquals
@@ -47,6 +48,14 @@ class DeviceInfoUtilTest {
4748
assertNotNull(deviceInfo.memorySize)
4849
}
4950

51+
@Test
52+
fun `sets default timezone`() {
53+
val deviceInfoUtil = DeviceInfoUtil.getInstance(context, SentryAndroidOptions())
54+
val deviceInfo = deviceInfoUtil.collectDeviceInformation(false, false)
55+
56+
assertEquals(TimeZone.getDefault(), deviceInfo.timezone)
57+
}
58+
5059
@Test
5160
fun `does include cpu data`() {
5261
CpuInfoUtils.getInstance().setCpuMaxFrequencies(listOf(1024))

0 commit comments

Comments
 (0)