diff --git a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java index 4c714d3bc..16f0d609b 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java @@ -48,7 +48,6 @@ import androidx.loader.content.Loader; import de.dennisguse.opentracks.content.data.TracksColumns; import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.fragments.ConfirmDeleteDialogFragment; -import de.dennisguse.opentracks.services.BoundServiceListener; import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.services.TrackRecordingServiceInterface; import de.dennisguse.opentracks.services.handlers.GpsStatusValue; @@ -185,7 +184,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe // Get GPS status and listen GPS status changes. gpsStatusValue = service.getGpsStatus(); updateGpsMenuItem(true, isRecording); - service.setListener(newStatus -> { + service.addListener(newStatus -> { gpsStatusValue = newStatus; updateGpsMenuItem(true, isRecording); }); diff --git a/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java b/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java index 987f27413..f00d44456 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java @@ -27,7 +27,7 @@ import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.fragments.ChartFragment; import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment; import de.dennisguse.opentracks.fragments.StatisticsRecordingFragment; -import de.dennisguse.opentracks.services.BoundServiceListener; +import de.dennisguse.opentracks.services.TrackRecordingServiceCallback; import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.services.TrackRecordingServiceInterface; import de.dennisguse.opentracks.services.handlers.GpsStatusValue; @@ -94,7 +94,7 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc trackController.update(true, false); trackController.onResume(true, recordingTrackPaused); } - service.setListener(new BoundServiceListener() { + service.addListener(new TrackRecordingServiceCallback() { @Override public void onGpsStatusChange(GpsStatusValue newStatus) { // TODO 2020-07-17 Add some visible View in the Layout to inform about this and then delete the Toast message. diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java index 95bd8497b..40ab98bf3 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java @@ -124,7 +124,7 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand private HandlerServer handlerServer; - private List listeners = new ArrayList<>(); + private List listeners = new ArrayList<>(); @Override public void onCreate() { @@ -161,6 +161,11 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand handlerServer.stop(this); handlerServer = null; + if (listeners != null) { + listeners.clear(); + listeners = null; + } + if (remoteSensorManager != null) { remoteSensorManager.stop(); remoteSensorManager = null; @@ -591,12 +596,12 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand @Override public void newGpsStatus(GpsStatusValue gpsStatusValue) { notificationManager.updateContent(getString(gpsStatusValue.message)); - for (BoundServiceListener listener : listeners) { + for (TrackRecordingServiceCallback listener : listeners) { listener.onGpsStatusChange(gpsStatusValue); } } - public void addListener(BoundServiceListener listener) { + public void addListener(TrackRecordingServiceCallback listener) { listeners.add(listener); } diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceBinder.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceBinder.java index 726a8349a..ca633d9f6 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceBinder.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceBinder.java @@ -24,7 +24,7 @@ class TrackRecordingServiceBinder extends android.os.Binder implements TrackReco } @Override - public void setListener(BoundServiceListener listener) { + public void addListener(TrackRecordingServiceCallback listener) { trackRecordingService.addListener(listener); } diff --git a/src/main/java/de/dennisguse/opentracks/services/BoundServiceListener.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceCallback.java similarity index 84% rename from src/main/java/de/dennisguse/opentracks/services/BoundServiceListener.java rename to src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceCallback.java index 6b03f14bf..bef363c31 100644 --- a/src/main/java/de/dennisguse/opentracks/services/BoundServiceListener.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceCallback.java @@ -5,6 +5,6 @@ import de.dennisguse.opentracks.services.handlers.GpsStatusValue; /** * Interface all activities have to implements to receive information from the service. */ -public interface BoundServiceListener { +public interface TrackRecordingServiceCallback { void onGpsStatusChange(GpsStatusValue newStatus); } diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceInterface.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceInterface.java index 5f9a2ad37..c8068d77c 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceInterface.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceInterface.java @@ -112,7 +112,7 @@ public interface TrackRecordingServiceInterface { @VisibleForTesting void newTrackPoint(TrackPoint trackPoint, int recordingGpsAccuracy); - void setListener(BoundServiceListener listener); + void addListener(TrackRecordingServiceCallback listener); GpsStatusValue getGpsStatus(); }