forked from upstream-mirrors/OpenTracks
Cleanup: TrackRecordingServiceConnection.
This commit is contained in:
@@ -157,8 +157,7 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
|
|||||||
startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
|
startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
|
||||||
} else {
|
} else {
|
||||||
if (gpsStatusValue.isGpsStarted()) {
|
if (gpsStatusValue.isGpsStarted()) {
|
||||||
recordingStatusConnection.unbindAndStop(this);
|
recordingStatusConnection.stopService(this);
|
||||||
recordingStatusConnection.startConnection(this); //TODO We need to stay listening!
|
|
||||||
} else {
|
} else {
|
||||||
new TrackRecordingServiceConnection((service, connection) -> {
|
new TrackRecordingServiceConnection((service, connection) -> {
|
||||||
service.tryStartSensors();
|
service.tryStartSensors();
|
||||||
@@ -220,7 +219,7 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
|
|||||||
super.onStart();
|
super.onStart();
|
||||||
|
|
||||||
PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
||||||
recordingStatusConnection.startConnection(this);
|
recordingStatusConnection.bind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ public class TrackRecordedActivity extends AbstractTrackDeleteActivity implement
|
|||||||
trackDataHub.loadTrack(trackId);
|
trackDataHub.loadTrack(trackId);
|
||||||
}
|
}
|
||||||
|
|
||||||
trackRecordingServiceConnection.startConnection(this);
|
trackRecordingServiceConnection.bind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
|
|||||||
|
|
||||||
PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
||||||
|
|
||||||
trackRecordingServiceConnection.startConnection(this);
|
trackRecordingServiceConnection.bind(this);
|
||||||
trackDataHub.start();
|
trackDataHub.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ public class StatisticsRecordingFragment extends Fragment {
|
|||||||
|
|
||||||
PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
||||||
|
|
||||||
trackRecordingServiceConnection.startConnection(getContext());
|
trackRecordingServiceConnection.bind(getContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+20
-22
@@ -74,14 +74,21 @@ public class TrackRecordingServiceConnection {
|
|||||||
setTrackRecordingService(null);
|
setTrackRecordingService(null);
|
||||||
};
|
};
|
||||||
|
|
||||||
public TrackRecordingServiceConnection() {
|
|
||||||
callback = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TrackRecordingServiceConnection(@NonNull Callback callback) {
|
public TrackRecordingServiceConnection(@NonNull Callback callback) {
|
||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void bind(@NonNull Context context) {
|
||||||
|
if (trackRecordingService != null) {
|
||||||
|
// Service is already started and bound.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Log.i(TAG, "Binding the service.");
|
||||||
|
int flags = BuildConfig.DEBUG ? Context.BIND_DEBUG_UNBIND : 0;
|
||||||
|
context.bindService(new Intent(context, TrackRecordingService.class), serviceConnection, flags);
|
||||||
|
}
|
||||||
|
|
||||||
public void startAndBind(Context context) {
|
public void startAndBind(Context context) {
|
||||||
if (trackRecordingService != null) {
|
if (trackRecordingService != null) {
|
||||||
// Service is already started and bound.
|
// Service is already started and bound.
|
||||||
@@ -90,7 +97,7 @@ public class TrackRecordingServiceConnection {
|
|||||||
|
|
||||||
ContextCompat.startForegroundService(context, new Intent(context, TrackRecordingService.class));
|
ContextCompat.startForegroundService(context, new Intent(context, TrackRecordingService.class));
|
||||||
|
|
||||||
startConnection(context);
|
bind(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO There should be a better way to implement this.
|
//TODO There should be a better way to implement this.
|
||||||
@@ -105,20 +112,7 @@ public class TrackRecordingServiceConnection {
|
|||||||
startAndBind(context);
|
startAndBind(context);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (callback != null) {
|
callback.onConnected(trackRecordingService, this);
|
||||||
callback.onConnected(trackRecordingService, this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void startConnection(@NonNull Context context) {
|
|
||||||
if (trackRecordingService != null) {
|
|
||||||
// Service is already started and bound.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Log.i(TAG, "Binding the service.");
|
|
||||||
int flags = BuildConfig.DEBUG ? Context.BIND_DEBUG_UNBIND : 0;
|
|
||||||
context.bindService(new Intent(context, TrackRecordingService.class), serviceConnection, flags);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -134,15 +128,19 @@ public class TrackRecordingServiceConnection {
|
|||||||
setTrackRecordingService(null);
|
setTrackRecordingService(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void stopService(Context context) {
|
||||||
|
context.stopService(new Intent(context, TrackRecordingService.class));
|
||||||
|
}
|
||||||
|
|
||||||
public void unbindAndStop(Context context) {
|
public void unbindAndStop(Context context) {
|
||||||
unbind(context);
|
unbind(context);
|
||||||
context.stopService(new Intent(context, TrackRecordingService.class));
|
stopService(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setTrackRecordingService(TrackRecordingService value) {
|
private void setTrackRecordingService(TrackRecordingService value) {
|
||||||
trackRecordingService = value;
|
trackRecordingService = value;
|
||||||
if (callback != null && value != null) {
|
if (value != null) {
|
||||||
callback.onConnected(value, this);
|
callback.onConnected(value, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class MarkerEditViewModel extends AndroidViewModel {
|
|||||||
private MutableLiveData<Marker> markerData;
|
private MutableLiveData<Marker> markerData;
|
||||||
private boolean isNewMarker;
|
private boolean isNewMarker;
|
||||||
private Uri photoOriginalUri;
|
private Uri photoOriginalUri;
|
||||||
private final TrackRecordingServiceConnection trackRecordingServiceConnection = new TrackRecordingServiceConnection();
|
private final TrackRecordingServiceConnection trackRecordingServiceConnection = new TrackRecordingServiceConnection((service, connection) -> {});
|
||||||
|
|
||||||
public MarkerEditViewModel(@NonNull Application application) {
|
public MarkerEditViewModel(@NonNull Application application) {
|
||||||
super(application);
|
super(application);
|
||||||
@@ -41,7 +41,7 @@ public class MarkerEditViewModel extends AndroidViewModel {
|
|||||||
public LiveData<Marker> getMarkerData(@NonNull Track.Id trackId, @Nullable Marker.Id markerId) {
|
public LiveData<Marker> getMarkerData(@NonNull Track.Id trackId, @Nullable Marker.Id markerId) {
|
||||||
if (markerData == null) {
|
if (markerData == null) {
|
||||||
markerData = new MutableLiveData<>();
|
markerData = new MutableLiveData<>();
|
||||||
trackRecordingServiceConnection.startConnection(getApplication());
|
trackRecordingServiceConnection.bind(getApplication());
|
||||||
loadData(trackId, markerId);
|
loadData(trackId, markerId);
|
||||||
}
|
}
|
||||||
return markerData;
|
return markerData;
|
||||||
|
|||||||
@@ -119,13 +119,13 @@ public class MarkerListActivity extends AbstractActivity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onStart() {
|
protected void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
trackRecordingServiceConnection.startConnection(this);
|
trackRecordingServiceConnection.bind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
trackRecordingServiceConnection.startConnection(this);
|
trackRecordingServiceConnection.bind(this);
|
||||||
this.invalidateOptionsMenu();
|
this.invalidateOptionsMenu();
|
||||||
loadData();
|
loadData();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user