diff --git a/src/main/java/de/dennisguse/opentracks/MarkerEditActivity.java b/src/main/java/de/dennisguse/opentracks/MarkerEditActivity.java index 6099c1f3c..7afac425d 100644 --- a/src/main/java/de/dennisguse/opentracks/MarkerEditActivity.java +++ b/src/main/java/de/dennisguse/opentracks/MarkerEditActivity.java @@ -95,7 +95,7 @@ public class MarkerEditActivity extends AbstractActivity { @Override protected void onStop() { super.onStop(); - trackRecordingServiceConnection.unbind(); + trackRecordingServiceConnection.unbind(this); } @Override diff --git a/src/main/java/de/dennisguse/opentracks/SearchListActivity.java b/src/main/java/de/dennisguse/opentracks/SearchListActivity.java index 84661f6da..486071430 100644 --- a/src/main/java/de/dennisguse/opentracks/SearchListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/SearchListActivity.java @@ -245,7 +245,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa protected void onStop() { super.onStop(); sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); - trackRecordingServiceConnection.unbind(); + trackRecordingServiceConnection.unbind(this); } @Override diff --git a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java index e596e48e7..d3920fbff 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java @@ -291,7 +291,7 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA protected void onStop() { super.onStop(); sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); - trackRecordingServiceConnection.unbind(); + trackRecordingServiceConnection.unbind(this); trackDataHub.stop(); } diff --git a/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java b/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java index 0a73a22e4..311f87935 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java @@ -175,7 +175,7 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit @Override protected void onStop() { super.onStop(); - trackRecordingServiceConnection.unbind(); + trackRecordingServiceConnection.unbind(this); } @Override diff --git a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java index 8e89806f6..a25453e46 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java @@ -141,7 +141,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe if (PreferencesUtils.isKey(TrackListActivity.this, R.string.recording_track_id_key, key)) { recordingTrackId = PreferencesUtils.getRecordingTrackId(TrackListActivity.this); if (key != null && PreferencesUtils.isRecording(recordingTrackId)) { - trackRecordingServiceConnection.startAndBind(); + trackRecordingServiceConnection.startAndBind(TrackListActivity.this); } } if (PreferencesUtils.isKey(TrackListActivity.this, R.string.recording_track_paused_key, key)) { @@ -344,7 +344,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe super.onStop(); sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); - trackRecordingServiceConnection.unbind(); + trackRecordingServiceConnection.unbind(this); } @Override @@ -406,14 +406,14 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe // Invoke trackRecordingService if (startGps) { - trackRecordingServiceConnection.startAndBind(); + trackRecordingServiceConnection.startAndBind(this); bindChangedCallback.run(); } else { ITrackRecordingService trackRecordingService = trackRecordingServiceConnection.getServiceIfBound(); if (trackRecordingService != null) { trackRecordingService.stopGps(); } - trackRecordingServiceConnection.unbindAndStop(); + trackRecordingServiceConnection.unbindAndStop(this); } // Update menu after starting or stopping gps @@ -498,7 +498,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe */ private void startRecording() { startNewRecording = true; - trackRecordingServiceConnection.startAndBind(); + trackRecordingServiceConnection.startAndBind(this); /* * If the binding has happened, then invoke the callback to start a new recording. diff --git a/src/main/java/de/dennisguse/opentracks/fragments/StatsFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/StatsFragment.java index c12163e35..d546b9d04 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/StatsFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/StatsFragment.java @@ -239,7 +239,7 @@ public class StatsFragment extends Fragment implements TrackDataListener { public void onStop() { super.onStop(); if (trackRecordingServiceConnection != null) { - trackRecordingServiceConnection.unbind(); + trackRecordingServiceConnection.unbind(getContext()); } trackRecordingServiceConnection = null; } diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceConnection.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceConnection.java index d4aed18a2..69ef613c6 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceConnection.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceConnection.java @@ -48,9 +48,6 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death private static final String TAG = TrackRecordingServiceConnection.class.getSimpleName(); - @Deprecated - //TODO Always the context of the owner of a service connection (i.e., let it be passed to every call). - private final Context context; private final Runnable callback; private ITrackRecordingService trackRecordingService; @@ -62,29 +59,28 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death * @param callback the callback to invoke when the service binding changes */ public TrackRecordingServiceConnection(Context context, Runnable callback) { - this.context = context; this.callback = callback; } /** * Starts and binds the service. */ - public void startAndBind() { - bindService(true); + public void startAndBind(Context context) { + bindService(context, true); } /** * Binds the service if it is started. */ - public void bindIfStarted() { - bindService(false); + public void bindIfStarted(Context context) { + bindService(context, false); } /** * Unbinds and stops the service. */ - public void unbindAndStop() { - unbind(); + public void unbindAndStop(Context context) { + unbind(context); context.stopService(new Intent(context, TrackRecordingService.class)); } @@ -111,7 +107,7 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death /** * Unbinds the service (but leave it running). */ - public void unbind() { + public void unbind(Context context) { try { context.unbindService(this); } catch (IllegalArgumentException e) { @@ -148,7 +144,7 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death * * @param startIfNeeded start the service if needed */ - private void bindService(boolean startIfNeeded) { + private void bindService(Context context, boolean startIfNeeded) { if (trackRecordingService != null) { // Service is already started and bound. return; @@ -175,7 +171,7 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death * @param context the context */ public void startConnection(@NonNull Context context) { - bindIfStarted(); + bindIfStarted(context); if (!ServiceUtils.isTrackRecordingServiceRunning(context)) { resetRecordingState(context); } @@ -266,6 +262,6 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death Log.e(TAG, "Unable to stop recording.", e); } } - unbindAndStop(); + unbindAndStop(context); } }