Skip to content

Commit e524d07

Browse files
committed
Address PR feedback
1 parent 0a924a0 commit e524d07

File tree

3 files changed

+44
-31
lines changed

3 files changed

+44
-31
lines changed

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

+11-7
Original file line numberDiff line numberDiff line change
@@ -85,22 +85,25 @@ public void close() throws IOException {
8585
@SuppressWarnings("deprecation")
8686
@Override
8787
public void onConfigurationChanged(@NotNull Configuration newConfig) {
88-
executeInBackground(() -> captureConfigurationChangedBreadcrumb(newConfig));
88+
final long now = System.currentTimeMillis();
89+
executeInBackground(() -> captureConfigurationChangedBreadcrumb(now, newConfig));
8990
}
9091

9192
@Override
9293
public void onLowMemory() {
93-
executeInBackground(() -> captureLowMemoryBreadcrumb(null));
94+
final long now = System.currentTimeMillis();
95+
executeInBackground(() -> captureLowMemoryBreadcrumb(now, null));
9496
}
9597

9698
@Override
9799
public void onTrimMemory(final int level) {
98-
executeInBackground(() -> captureLowMemoryBreadcrumb(level));
100+
final long now = System.currentTimeMillis();
101+
executeInBackground(() -> captureLowMemoryBreadcrumb(now, level));
99102
}
100103

101-
private void captureLowMemoryBreadcrumb(final @Nullable Integer level) {
104+
private void captureLowMemoryBreadcrumb(final long timeMs, final @Nullable Integer level) {
102105
if (hub != null) {
103-
final Breadcrumb breadcrumb = new Breadcrumb();
106+
final Breadcrumb breadcrumb = new Breadcrumb(timeMs);
104107
if (level != null) {
105108
// only add breadcrumb if TRIM_MEMORY_BACKGROUND, TRIM_MEMORY_MODERATE or
106109
// TRIM_MEMORY_COMPLETE.
@@ -127,7 +130,8 @@ private void captureLowMemoryBreadcrumb(final @Nullable Integer level) {
127130
}
128131
}
129132

130-
private void captureConfigurationChangedBreadcrumb(final @NotNull Configuration newConfig) {
133+
private void captureConfigurationChangedBreadcrumb(
134+
final long timeMs, final @NotNull Configuration newConfig) {
131135
if (hub != null) {
132136
final Device.DeviceOrientation deviceOrientation =
133137
DeviceOrientations.getOrientation(context.getResources().getConfiguration().orientation);
@@ -139,7 +143,7 @@ private void captureConfigurationChangedBreadcrumb(final @NotNull Configuration
139143
orientation = "undefined";
140144
}
141145

142-
final Breadcrumb breadcrumb = new Breadcrumb();
146+
final Breadcrumb breadcrumb = new Breadcrumb(timeMs);
143147
breadcrumb.setType("navigation");
144148
breadcrumb.setCategory("device.orientation");
145149
breadcrumb.setData("position", orientation);

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

+25-21
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public final class NetworkBreadcrumbsIntegration implements Integration, Closeab
3333
private final @NotNull Context context;
3434
private final @NotNull BuildInfoProvider buildInfoProvider;
3535
private final @NotNull ILogger logger;
36+
private final @NotNull Object lock = new Object();
3637
private volatile boolean isClosed;
3738
private @Nullable SentryOptions options;
3839

@@ -73,9 +74,6 @@ public void register(final @NotNull IHub hub, final @NotNull SentryOptions optio
7374
return;
7475
}
7576

76-
networkCallback =
77-
new NetworkBreadcrumbsNetworkCallback(hub, buildInfoProvider, options.getDateProvider());
78-
7977
try {
8078
options
8179
.getExecutorService()
@@ -84,21 +82,26 @@ public void register(final @NotNull IHub hub, final @NotNull SentryOptions optio
8482
@Override
8583
public void run() {
8684
// in case integration is closed before the task is executed, simply return
87-
final @Nullable NetworkBreadcrumbsNetworkCallback callback = networkCallback;
88-
if (isClosed || callback == null) {
89-
networkCallback = null;
85+
if (isClosed) {
9086
return;
9187
}
9288

93-
final boolean registered =
94-
AndroidConnectionStatusProvider.registerNetworkCallback(
95-
context, logger, buildInfoProvider, callback);
96-
if (registered) {
97-
logger.log(SentryLevel.DEBUG, "NetworkBreadcrumbsIntegration installed.");
98-
addIntegrationToSdkVersion(getClass());
99-
} else {
100-
logger.log(SentryLevel.DEBUG, "NetworkBreadcrumbsIntegration not installed.");
101-
// The specific error is logged by AndroidConnectionStatusProvider
89+
synchronized (lock) {
90+
networkCallback =
91+
new NetworkBreadcrumbsNetworkCallback(
92+
hub, buildInfoProvider, options.getDateProvider());
93+
94+
final boolean registered =
95+
AndroidConnectionStatusProvider.registerNetworkCallback(
96+
context, logger, buildInfoProvider, networkCallback);
97+
if (registered) {
98+
logger.log(SentryLevel.DEBUG, "NetworkBreadcrumbsIntegration installed.");
99+
addIntegrationToSdkVersion(getClass());
100+
} else {
101+
logger.log(
102+
SentryLevel.DEBUG, "NetworkBreadcrumbsIntegration not installed.");
103+
// The specific error is logged by AndroidConnectionStatusProvider
104+
}
102105
}
103106
}
104107
});
@@ -117,13 +120,14 @@ public void close() throws IOException {
117120
.getExecutorService()
118121
.submit(
119122
() -> {
120-
final @Nullable NetworkBreadcrumbsNetworkCallback callback = networkCallback;
121-
if (callback != null) {
122-
AndroidConnectionStatusProvider.unregisterNetworkCallback(
123-
context, logger, buildInfoProvider, callback);
124-
logger.log(SentryLevel.DEBUG, "NetworkBreadcrumbsIntegration removed.");
123+
synchronized (lock) {
124+
if (networkCallback != null) {
125+
AndroidConnectionStatusProvider.unregisterNetworkCallback(
126+
context, logger, buildInfoProvider, networkCallback);
127+
logger.log(SentryLevel.DEBUG, "NetworkBreadcrumbsIntegration removed.");
128+
}
129+
networkCallback = null;
125130
}
126-
networkCallback = null;
127131
});
128132
} catch (Throwable t) {
129133
logger.log(SentryLevel.ERROR, "Error submitting NetworkBreadcrumbsIntegration task.", t);

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

+8-3
Original file line numberDiff line numberDiff line change
@@ -230,12 +230,14 @@ public void onReceive(final Context context, final @NotNull Intent intent) {
230230
return;
231231
}
232232

233+
final long now = System.currentTimeMillis();
233234
try {
234235
options
235236
.getExecutorService()
236237
.submit(
237238
() -> {
238-
final Breadcrumb breadcrumb = createBreadcrumb(intent, action, isBatteryChanged);
239+
final Breadcrumb breadcrumb =
240+
createBreadcrumb(now, intent, action, isBatteryChanged);
239241
final Hint hint = new Hint();
240242
hint.set(ANDROID_INTENT, intent);
241243
hub.addBreadcrumb(breadcrumb, hint);
@@ -248,8 +250,11 @@ public void onReceive(final Context context, final @NotNull Intent intent) {
248250
}
249251

250252
private @NotNull Breadcrumb createBreadcrumb(
251-
final @NotNull Intent intent, final @Nullable String action, boolean isBatteryChanged) {
252-
final Breadcrumb breadcrumb = new Breadcrumb();
253+
final long timeMs,
254+
final @NotNull Intent intent,
255+
final @Nullable String action,
256+
boolean isBatteryChanged) {
257+
final Breadcrumb breadcrumb = new Breadcrumb(timeMs);
253258
breadcrumb.setType("system");
254259
breadcrumb.setCategory("device.event");
255260
final String shortAction = StringUtils.getStringAfterDot(action);

0 commit comments

Comments
 (0)