Cleanup: TrackRecordingServiceConnection.

This commit is contained in:
Dennis Guse
2023-12-26 11:30:50 +01:00
parent df8306c2f8
commit 59aeec4fbc
7 changed files with 29 additions and 32 deletions
@@ -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
@@ -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();
} }