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));
} else {
if (gpsStatusValue.isGpsStarted()) {
recordingStatusConnection.unbindAndStop(this);
recordingStatusConnection.startConnection(this); //TODO We need to stay listening!
recordingStatusConnection.stopService(this);
} else {
new TrackRecordingServiceConnection((service, connection) -> {
service.tryStartSensors();
@@ -220,7 +219,7 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
super.onStart();
PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
recordingStatusConnection.startConnection(this);
recordingStatusConnection.bind(this);
}
@Override
@@ -126,7 +126,7 @@ public class TrackRecordedActivity extends AbstractTrackDeleteActivity implement
trackDataHub.loadTrack(trackId);
}
trackRecordingServiceConnection.startConnection(this);
trackRecordingServiceConnection.bind(this);
}
@Override
@@ -207,7 +207,7 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
trackRecordingServiceConnection.startConnection(this);
trackRecordingServiceConnection.bind(this);
trackDataHub.start();
}
@@ -88,7 +88,7 @@ public class StatisticsRecordingFragment extends Fragment {
PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
trackRecordingServiceConnection.startConnection(getContext());
trackRecordingServiceConnection.bind(getContext());
}
@Override
@@ -74,14 +74,21 @@ public class TrackRecordingServiceConnection {
setTrackRecordingService(null);
};
public TrackRecordingServiceConnection() {
callback = null;
}
public TrackRecordingServiceConnection(@NonNull 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) {
if (trackRecordingService != null) {
// Service is already started and bound.
@@ -90,7 +97,7 @@ public class TrackRecordingServiceConnection {
ContextCompat.startForegroundService(context, new Intent(context, TrackRecordingService.class));
startConnection(context);
bind(context);
}
//TODO There should be a better way to implement this.
@@ -105,20 +112,7 @@ public class TrackRecordingServiceConnection {
startAndBind(context);
return;
}
if (callback != null) {
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);
callback.onConnected(trackRecordingService, this);
}
/**
@@ -134,15 +128,19 @@ public class TrackRecordingServiceConnection {
setTrackRecordingService(null);
}
public void stopService(Context context) {
context.stopService(new Intent(context, TrackRecordingService.class));
}
public void unbindAndStop(Context context) {
unbind(context);
context.stopService(new Intent(context, TrackRecordingService.class));
stopService(context);
}
private void setTrackRecordingService(TrackRecordingService value) {
trackRecordingService = value;
if (callback != null && value != null) {
callback.onConnected(value, this);
if (value != null) {
callback.onConnected(value, this);
}
}
@@ -32,7 +32,7 @@ public class MarkerEditViewModel extends AndroidViewModel {
private MutableLiveData<Marker> markerData;
private boolean isNewMarker;
private Uri photoOriginalUri;
private final TrackRecordingServiceConnection trackRecordingServiceConnection = new TrackRecordingServiceConnection();
private final TrackRecordingServiceConnection trackRecordingServiceConnection = new TrackRecordingServiceConnection((service, connection) -> {});
public MarkerEditViewModel(@NonNull Application application) {
super(application);
@@ -41,7 +41,7 @@ public class MarkerEditViewModel extends AndroidViewModel {
public LiveData<Marker> getMarkerData(@NonNull Track.Id trackId, @Nullable Marker.Id markerId) {
if (markerData == null) {
markerData = new MutableLiveData<>();
trackRecordingServiceConnection.startConnection(getApplication());
trackRecordingServiceConnection.bind(getApplication());
loadData(trackId, markerId);
}
return markerData;
@@ -119,13 +119,13 @@ public class MarkerListActivity extends AbstractActivity {
@Override
protected void onStart() {
super.onStart();
trackRecordingServiceConnection.startConnection(this);
trackRecordingServiceConnection.bind(this);
}
@Override
protected void onResume() {
super.onResume();
trackRecordingServiceConnection.startConnection(this);
trackRecordingServiceConnection.bind(this);
this.invalidateOptionsMenu();
loadData();
}