From 48b6438c065338ebc176fb4ee66313db78016fc1 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sat, 8 May 2021 14:28:24 +0200 Subject: [PATCH] Bugfix: TrackDataHub needs to use the same TrackStatisticsUpdater for a whole track (incl. newly received TrackPoints). Fixes #745. Introduced in https://github.com/OpenTracksApp/OpenTracks/commit/887d4700d4f8fbf10563834e7498388a3213007e --- .../dennisguse/opentracks/content/TrackDataHub.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java b/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java index f0a5c5fd9..e447904bd 100644 --- a/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java +++ b/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java @@ -91,6 +91,7 @@ public class TrackDataHub { private int numLoadedPoints; private TrackPoint.Id firstSeenTrackPointId; private TrackPoint.Id lastSeenTrackPointId; + private TrackStatisticsUpdater trackStatisticsUpdater; // Registered listeners private ContentObserver tracksTableObserver; @@ -145,12 +146,6 @@ public class TrackDataHub { } }; contentResolver.registerContentObserver(TrackPointsColumns.CONTENT_URI_BY_ID, false, trackPointsTableObserver); - - handler.post(() -> { - if (started) { - loadDataForAll(); - } - }); } public void stop() { @@ -160,6 +155,7 @@ public class TrackDataHub { } started = false; + trackStatisticsUpdater = null; //Unregister listeners ContentResolver contentResolver = context.getContentResolver(); @@ -355,8 +351,6 @@ public class TrackDataHub { next = new TrackPoint.Id(localLastSeenTrackPointIdId.getId() + 1); //TODO startTrackPointId + 1 is an assumption assumption; should be derived from the DB. } - TrackStatisticsUpdater trackStatisticsUpdater = new TrackStatisticsUpdater(); - TrackPoint trackPoint = null; try (TrackPointIterator trackPointIterator = contentProviderUtils.getTrackPointLocationIterator(selectedTrackId, next)) { @@ -439,6 +433,7 @@ public class TrackDataHub { numLoadedPoints = 0; firstSeenTrackPointId = null; lastSeenTrackPointId = null; + trackStatisticsUpdater = new TrackStatisticsUpdater(); } public void setRecordingStatus(TrackRecordingService.RecordingStatus recordingStatus) {