@@ -353,6 +353,11 @@ private void notifyTrackPointsTableUpdate(boolean updateSamplingState, Set<Track
353353 }
354354
355355 TrackPoint trackPoint = null ;
356+ TrackStatisticsUpdater currentUpdater = trackStatisticsUpdater ; //TODO This prevents a NPE if stop() is happening while notifyTrackPointsTableUpdate()
357+ if (currentUpdater == null ) {
358+ Log .e (TAG , "notifyTrackPointsTableUpdate() while being stopped." );
359+ return ;
360+ }
356361 try (TrackPointIterator trackPointIterator = contentProviderUtils .getTrackPointLocationIterator (selectedTrackId , next )) {
357362
358363 while (trackPointIterator .hasNext ()) {
@@ -375,16 +380,16 @@ private void notifyTrackPointsTableUpdate(boolean updateSamplingState, Set<Track
375380 samplingFrequency = 1 + (int ) (numTotalPoints / targetNumPoints );
376381 }
377382
378- trackStatisticsUpdater .addTrackPoint (trackPoint , recordingDistanceInterval );
383+ currentUpdater .addTrackPoint (trackPoint , recordingDistanceInterval );
379384
380385 // Also include the last point if the selected track is not recording.
381386 if ((localNumLoadedTrackPoints % samplingFrequency == 0 ) || (trackPointId == lastTrackPointId && !isSelectedTrackRecording ())) {
382387 for (TrackDataListener trackDataListener : sampledInListeners ) {
383- trackDataListener .onSampledInTrackPoint (trackPoint , trackStatisticsUpdater .getTrackStatistics (), trackStatisticsUpdater .getSmoothedSpeed (), trackStatisticsUpdater .getSmoothedAltitude ());
388+ trackDataListener .onSampledInTrackPoint (trackPoint , currentUpdater .getTrackStatistics (), currentUpdater .getSmoothedSpeed (), currentUpdater .getSmoothedAltitude ());
384389 }
385390 } else {
386391 for (TrackDataListener trackDataListener : sampledOutListeners ) {
387- trackDataListener .onSampledOutTrackPoint (trackPoint , trackStatisticsUpdater .getTrackStatistics ());
392+ trackDataListener .onSampledOutTrackPoint (trackPoint , currentUpdater .getTrackStatistics ());
388393 }
389394 }
390395
0 commit comments