From 7d8c4dcb29d9a683351120dcd2db4d51f45fc182 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 20 Aug 2023 19:28:37 +0200 Subject: [PATCH] Bugfix: re-introduced race condition fix for newGpsStatus. Follow-up to e9f24f6bae351e2efe9911ec15e61a2ae1be5daa Fixes #1668. --- .../opentracks/services/TrackRecordingService.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java index 93e07aa9d..171ce3077 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java @@ -32,6 +32,8 @@ import androidx.annotation.VisibleForTesting; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; +import java.io.PrintWriter; +import java.io.StringWriter; import java.time.Duration; import de.dennisguse.opentracks.data.models.Distance; @@ -244,6 +246,15 @@ public class TrackRecordingService extends Service implements TrackPointCreator. public void newGpsStatus(GpsStatusValue gpsStatusValue) { Log.e(TAG, "newGpsStatus: " + gpsStatusValue.message); + if (notificationManager == null) { + + StringWriter writer = new StringWriter(); + Exception e = new RuntimeException("TrackRecording.newGpsStatus() called after onDestroy(); objectID: " + this + " with thread: " + Thread.currentThread().toString()); + e.printStackTrace(new PrintWriter(writer)); + + Log.e(TAG, e.getMessage() + " " + writer); + return; + } notificationManager.updateContent(getString(gpsStatusValue.message)); gpsStatusObservable.postValue(gpsStatusValue); }