forked from upstream-mirrors/OpenTracks
Cleanup: TrackRecordingServiceConnection has now an execute method (avoid instantiation).
This commit is contained in:
@@ -159,11 +159,7 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
|
|||||||
if (gpsStatusValue.isGpsStarted()) {
|
if (gpsStatusValue.isGpsStarted()) {
|
||||||
recordingStatusConnection.stopService(this);
|
recordingStatusConnection.stopService(this);
|
||||||
} else {
|
} else {
|
||||||
new TrackRecordingServiceConnection((service, connection) -> {
|
TrackRecordingServiceConnection.execute(this, (service, connection) -> service.tryStartSensors());
|
||||||
service.tryStartSensors();
|
|
||||||
|
|
||||||
connection.unbind(this);
|
|
||||||
}).startAndBindWithCallback(this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -182,15 +178,13 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
|
|||||||
// Not Recording -> Recording
|
// Not Recording -> Recording
|
||||||
Log.i(TAG, "Starting recording");
|
Log.i(TAG, "Starting recording");
|
||||||
updateGpsMenuItem(false, true);
|
updateGpsMenuItem(false, true);
|
||||||
new TrackRecordingServiceConnection((service, connection) -> {
|
TrackRecordingServiceConnection.execute(this, (service, connection) -> {
|
||||||
Track.Id trackId = service.startNewTrack();
|
Track.Id trackId = service.startNewTrack();
|
||||||
|
|
||||||
Intent newIntent = IntentUtils.newIntent(TrackListActivity.this, TrackRecordingActivity.class);
|
Intent newIntent = IntentUtils.newIntent(TrackListActivity.this, TrackRecordingActivity.class);
|
||||||
newIntent.putExtra(TrackRecordingActivity.EXTRA_TRACK_ID, trackId);
|
newIntent.putExtra(TrackRecordingActivity.EXTRA_TRACK_ID, trackId);
|
||||||
startActivity(newIntent);
|
startActivity(newIntent);
|
||||||
|
});
|
||||||
connection.unbind(this);
|
|
||||||
}).startAndBind(this);
|
|
||||||
});
|
});
|
||||||
viewBinding.trackListFabAction.setOnLongClickListener((view) -> {
|
viewBinding.trackListFabAction.setOnLongClickListener((view) -> {
|
||||||
if (!recordingStatus.isRecording()) {
|
if (!recordingStatus.isRecording()) {
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ public class TrackRecordedActivity extends AbstractTrackDeleteActivity implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (item.getItemId() == R.id.track_detail_resume_track) {
|
if (item.getItemId() == R.id.track_detail_resume_track) {
|
||||||
new TrackRecordingServiceConnection((service, connection) -> {
|
TrackRecordingServiceConnection.execute(this, (service, connection) -> {
|
||||||
service.resumeTrack(trackId);
|
service.resumeTrack(trackId);
|
||||||
|
|
||||||
Intent newIntent = IntentUtils.newIntent(TrackRecordedActivity.this, TrackRecordingActivity.class)
|
Intent newIntent = IntentUtils.newIntent(TrackRecordedActivity.this, TrackRecordingActivity.class)
|
||||||
@@ -209,9 +209,8 @@ public class TrackRecordedActivity extends AbstractTrackDeleteActivity implement
|
|||||||
startActivity(newIntent);
|
startActivity(newIntent);
|
||||||
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
|
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
|
||||||
|
|
||||||
connection.unbind(this);
|
|
||||||
finish();
|
finish();
|
||||||
}).startAndBind(this);
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
|
|||||||
trackDataHub.setRecordingStatus(recordingStatus);
|
trackDataHub.setRecordingStatus(recordingStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
trackRecordingServiceConnection.startAndBindWithCallback(this);
|
trackRecordingServiceConnection.bind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ public class TrackStoppedActivity extends AbstractTrackDeleteActivity implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void resumeTrackAndFinish() {
|
private void resumeTrackAndFinish() {
|
||||||
new TrackRecordingServiceConnection((service, connection) -> {
|
TrackRecordingServiceConnection.execute(this, (service, connection) -> {
|
||||||
service.resumeTrack(trackId);
|
service.resumeTrack(trackId);
|
||||||
|
|
||||||
Intent newIntent = IntentUtils.newIntent(TrackStoppedActivity.this, TrackRecordingActivity.class)
|
Intent newIntent = IntentUtils.newIntent(TrackStoppedActivity.this, TrackRecordingActivity.class)
|
||||||
@@ -144,9 +144,8 @@ public class TrackStoppedActivity extends AbstractTrackDeleteActivity implements
|
|||||||
startActivity(newIntent);
|
startActivity(newIntent);
|
||||||
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
|
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
|
||||||
|
|
||||||
connection.unbind(this);
|
|
||||||
finish();
|
finish();
|
||||||
}).startAndBind(this);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -37,8 +37,7 @@ public abstract class AbstractAPIActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
if (PreferencesUtils.isPublicAPIenabled()) {
|
if (PreferencesUtils.isPublicAPIenabled()) {
|
||||||
Log.i(TAG, "Received and trying to execute requested action.");
|
Log.i(TAG, "Received and trying to execute requested action.");
|
||||||
new TrackRecordingServiceConnection(serviceConnectedCallback)
|
TrackRecordingServiceConnection.execute(this, serviceConnectedCallback);
|
||||||
.startAndBind(this);
|
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(this, getString(R.string.settings_public_api_disabled_toast), Toast.LENGTH_LONG).show();
|
Toast.makeText(this, getString(R.string.settings_public_api_disabled_toast), Toast.LENGTH_LONG).show();
|
||||||
Log.w(TAG, "Public API is disabled; ignoring request.");
|
Log.w(TAG, "Public API is disabled; ignoring request.");
|
||||||
|
|||||||
+12
-27
@@ -80,7 +80,7 @@ public class TrackRecordingServiceConnection {
|
|||||||
|
|
||||||
public void bind(@NonNull Context context) {
|
public void bind(@NonNull Context context) {
|
||||||
if (trackRecordingService != null) {
|
if (trackRecordingService != null) {
|
||||||
// Service is already started and bound.
|
callback.onConnected(trackRecordingService, this);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,32 +89,6 @@ public class TrackRecordingServiceConnection {
|
|||||||
context.bindService(new Intent(context, TrackRecordingService.class), serviceConnection, flags);
|
context.bindService(new Intent(context, TrackRecordingService.class), serviceConnection, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startAndBind(Context context) {
|
|
||||||
if (trackRecordingService != null) {
|
|
||||||
// Service is already started and bound.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ContextCompat.startForegroundService(context, new Intent(context, TrackRecordingService.class));
|
|
||||||
|
|
||||||
bind(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO There should be a better way to implement this.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Triggers the onConnected() callback even if already connected.
|
|
||||||
*/
|
|
||||||
//TODO Check if this is actually needed as it is used to re-connect from Activities in onResume by using a LiveData; might be obsolete. If not, there should be a better way to implement this.
|
|
||||||
@Deprecated
|
|
||||||
public void startAndBindWithCallback(Context context) {
|
|
||||||
if (trackRecordingService == null) {
|
|
||||||
startAndBind(context);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
callback.onConnected(trackRecordingService, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unbinds the service (but leave it running).
|
* Unbinds the service (but leave it running).
|
||||||
*/
|
*/
|
||||||
@@ -178,4 +152,15 @@ public class TrackRecordingServiceConnection {
|
|||||||
public interface Callback {
|
public interface Callback {
|
||||||
void onConnected(TrackRecordingService service, TrackRecordingServiceConnection self);
|
void onConnected(TrackRecordingService service, TrackRecordingServiceConnection self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void execute(Context context, Callback callback) {
|
||||||
|
Callback withUnbind = (service, connection) -> {
|
||||||
|
callback.onConnected(service, connection);
|
||||||
|
connection.unbind(context);
|
||||||
|
};
|
||||||
|
new TrackRecordingServiceConnection(withUnbind)
|
||||||
|
.bind(context);
|
||||||
|
|
||||||
|
ContextCompat.startForegroundService(context, new Intent(context, TrackRecordingService.class));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user