forked from upstream-mirrors/OpenTracks
TrackRecordingService does not save the context.
This commit is contained in:
@@ -95,7 +95,7 @@ public class MarkerEditActivity extends AbstractActivity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onStop() {
|
protected void onStop() {
|
||||||
super.onStop();
|
super.onStop();
|
||||||
trackRecordingServiceConnection.unbind();
|
trackRecordingServiceConnection.unbind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -245,7 +245,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
|
|||||||
protected void onStop() {
|
protected void onStop() {
|
||||||
super.onStop();
|
super.onStop();
|
||||||
sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
||||||
trackRecordingServiceConnection.unbind();
|
trackRecordingServiceConnection.unbind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -291,7 +291,7 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA
|
|||||||
protected void onStop() {
|
protected void onStop() {
|
||||||
super.onStop();
|
super.onStop();
|
||||||
sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
||||||
trackRecordingServiceConnection.unbind();
|
trackRecordingServiceConnection.unbind(this);
|
||||||
trackDataHub.stop();
|
trackDataHub.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit
|
|||||||
@Override
|
@Override
|
||||||
protected void onStop() {
|
protected void onStop() {
|
||||||
super.onStop();
|
super.onStop();
|
||||||
trackRecordingServiceConnection.unbind();
|
trackRecordingServiceConnection.unbind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
|
|||||||
if (PreferencesUtils.isKey(TrackListActivity.this, R.string.recording_track_id_key, key)) {
|
if (PreferencesUtils.isKey(TrackListActivity.this, R.string.recording_track_id_key, key)) {
|
||||||
recordingTrackId = PreferencesUtils.getRecordingTrackId(TrackListActivity.this);
|
recordingTrackId = PreferencesUtils.getRecordingTrackId(TrackListActivity.this);
|
||||||
if (key != null && PreferencesUtils.isRecording(recordingTrackId)) {
|
if (key != null && PreferencesUtils.isRecording(recordingTrackId)) {
|
||||||
trackRecordingServiceConnection.startAndBind();
|
trackRecordingServiceConnection.startAndBind(TrackListActivity.this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (PreferencesUtils.isKey(TrackListActivity.this, R.string.recording_track_paused_key, key)) {
|
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();
|
super.onStop();
|
||||||
|
|
||||||
sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
||||||
trackRecordingServiceConnection.unbind();
|
trackRecordingServiceConnection.unbind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -406,14 +406,14 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
|
|||||||
|
|
||||||
// Invoke trackRecordingService
|
// Invoke trackRecordingService
|
||||||
if (startGps) {
|
if (startGps) {
|
||||||
trackRecordingServiceConnection.startAndBind();
|
trackRecordingServiceConnection.startAndBind(this);
|
||||||
bindChangedCallback.run();
|
bindChangedCallback.run();
|
||||||
} else {
|
} else {
|
||||||
ITrackRecordingService trackRecordingService = trackRecordingServiceConnection.getServiceIfBound();
|
ITrackRecordingService trackRecordingService = trackRecordingServiceConnection.getServiceIfBound();
|
||||||
if (trackRecordingService != null) {
|
if (trackRecordingService != null) {
|
||||||
trackRecordingService.stopGps();
|
trackRecordingService.stopGps();
|
||||||
}
|
}
|
||||||
trackRecordingServiceConnection.unbindAndStop();
|
trackRecordingServiceConnection.unbindAndStop(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update menu after starting or stopping gps
|
// Update menu after starting or stopping gps
|
||||||
@@ -498,7 +498,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
|
|||||||
*/
|
*/
|
||||||
private void startRecording() {
|
private void startRecording() {
|
||||||
startNewRecording = true;
|
startNewRecording = true;
|
||||||
trackRecordingServiceConnection.startAndBind();
|
trackRecordingServiceConnection.startAndBind(this);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the binding has happened, then invoke the callback to start a new recording.
|
* If the binding has happened, then invoke the callback to start a new recording.
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ public class StatsFragment extends Fragment implements TrackDataListener {
|
|||||||
public void onStop() {
|
public void onStop() {
|
||||||
super.onStop();
|
super.onStop();
|
||||||
if (trackRecordingServiceConnection != null) {
|
if (trackRecordingServiceConnection != null) {
|
||||||
trackRecordingServiceConnection.unbind();
|
trackRecordingServiceConnection.unbind(getContext());
|
||||||
}
|
}
|
||||||
trackRecordingServiceConnection = null;
|
trackRecordingServiceConnection = null;
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-14
@@ -48,9 +48,6 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
|
|||||||
|
|
||||||
private static final String TAG = TrackRecordingServiceConnection.class.getSimpleName();
|
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 final Runnable callback;
|
||||||
|
|
||||||
private ITrackRecordingService trackRecordingService;
|
private ITrackRecordingService trackRecordingService;
|
||||||
@@ -62,29 +59,28 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
|
|||||||
* @param callback the callback to invoke when the service binding changes
|
* @param callback the callback to invoke when the service binding changes
|
||||||
*/
|
*/
|
||||||
public TrackRecordingServiceConnection(Context context, Runnable callback) {
|
public TrackRecordingServiceConnection(Context context, Runnable callback) {
|
||||||
this.context = context;
|
|
||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts and binds the service.
|
* Starts and binds the service.
|
||||||
*/
|
*/
|
||||||
public void startAndBind() {
|
public void startAndBind(Context context) {
|
||||||
bindService(true);
|
bindService(context, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Binds the service if it is started.
|
* Binds the service if it is started.
|
||||||
*/
|
*/
|
||||||
public void bindIfStarted() {
|
public void bindIfStarted(Context context) {
|
||||||
bindService(false);
|
bindService(context, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unbinds and stops the service.
|
* Unbinds and stops the service.
|
||||||
*/
|
*/
|
||||||
public void unbindAndStop() {
|
public void unbindAndStop(Context context) {
|
||||||
unbind();
|
unbind(context);
|
||||||
context.stopService(new Intent(context, TrackRecordingService.class));
|
context.stopService(new Intent(context, TrackRecordingService.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,7 +107,7 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
|
|||||||
/**
|
/**
|
||||||
* Unbinds the service (but leave it running).
|
* Unbinds the service (but leave it running).
|
||||||
*/
|
*/
|
||||||
public void unbind() {
|
public void unbind(Context context) {
|
||||||
try {
|
try {
|
||||||
context.unbindService(this);
|
context.unbindService(this);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
@@ -148,7 +144,7 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
|
|||||||
*
|
*
|
||||||
* @param startIfNeeded start the service if needed
|
* @param startIfNeeded start the service if needed
|
||||||
*/
|
*/
|
||||||
private void bindService(boolean startIfNeeded) {
|
private void bindService(Context context, boolean startIfNeeded) {
|
||||||
if (trackRecordingService != null) {
|
if (trackRecordingService != null) {
|
||||||
// Service is already started and bound.
|
// Service is already started and bound.
|
||||||
return;
|
return;
|
||||||
@@ -175,7 +171,7 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
|
|||||||
* @param context the context
|
* @param context the context
|
||||||
*/
|
*/
|
||||||
public void startConnection(@NonNull Context context) {
|
public void startConnection(@NonNull Context context) {
|
||||||
bindIfStarted();
|
bindIfStarted(context);
|
||||||
if (!ServiceUtils.isTrackRecordingServiceRunning(context)) {
|
if (!ServiceUtils.isTrackRecordingServiceRunning(context)) {
|
||||||
resetRecordingState(context);
|
resetRecordingState(context);
|
||||||
}
|
}
|
||||||
@@ -266,6 +262,6 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
|
|||||||
Log.e(TAG, "Unable to stop recording.", e);
|
Log.e(TAG, "Unable to stop recording.", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unbindAndStop();
|
unbindAndStop(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user