From 05e6018bd1cb92ef52b4f250ee20c88b41be1b70 Mon Sep 17 00:00:00 2001 From: Josh Kasten Date: Wed, 28 Sep 2011 19:22:49 -0500 Subject: [PATCH] Organized code in handleStartCommand into smaller methods to better see the code paths and for eaier maintainability. --- .../services/TrackRecordingService.java | 56 ++++++++++++------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java b/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java index d250f194b..d4207e670 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java @@ -283,30 +283,46 @@ public class TrackRecordingService extends Service { Log.d(TAG, "TrackRecordingService.handleStartCommand: " + startId); + if (intent == null) + return; + // Check if called on phone reboot with resume intent. - if (intent != null) { - if (intent.getBooleanExtra(RESUME_TRACK_EXTRA_NAME, false)) { - resumeTrack(startId); - } else { - // Process actions for controlling the service. - - String action = intent.getAction(); - try { - if (getString(R.string.start_new_track_action).equals(action)) { - startNewTrack(); - if (intent.getBooleanExtra(getString(R.string.select_new_track_extra), false)) { - prefManager.setSelectedTrack(recordingTrackId); - } - } else if (getString(R.string.end_current_track_action).equals(action)) { - endCurrentTrack(); - } - } catch (IllegalStateException e) { - if (!intent.getBooleanExtra(getString(R.string.ignore_illegal_state), false)) - throw e; - } + if (intent.getBooleanExtra(RESUME_TRACK_EXTRA_NAME, false)) { + resumeTrack(startId); + } else { + try { + // Process actions for controlling the service. + processStartStopIntent(intent); + } catch (IllegalStateException e) { + /* Eat the exception if our sender says to ignore it, e.g., the Widget. */ + if (!intent.getBooleanExtra(getString(R.string.ignore_illegal_state), false)) + throw e; } } } + + private void processStartStopIntent(Intent intent) { + String action = intent.getAction(); + + if (isNewTrackAction(action)) { + boolean selectNewTrack = intent.getBooleanExtra(getString(R.string.select_new_track_extra), false); + + startNewTrack(); + if (selectNewTrack) { + prefManager.setSelectedTrack(recordingTrackId); + } + } else if (isEndTrackAction(action)) { + endCurrentTrack(); + } + } + + private boolean isNewTrackAction(String action) { + return getString(R.string.start_new_track_action).equals(action); + } + + private boolean isEndTrackAction(String action) { + return getString(R.string.end_current_track_action).equals(action); + } private void resumeTrack(int startId) { Log.d(TAG, "TrackRecordingService: requested resume");