From aaec10014a2a2643234c55b6aae477db262930a7 Mon Sep 17 00:00:00 2001 From: Christopher Eby Date: Tue, 18 Oct 2011 20:53:33 -0500 Subject: [PATCH] Restart activities on layout change rather than kill them --- .../kreed/vanilla/FullPlaybackActivity.java | 19 +++++++++++++++++++ src/org/kreed/vanilla/LibraryActivity.java | 4 ++++ src/org/kreed/vanilla/PlaybackService.java | 12 ------------ 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/org/kreed/vanilla/FullPlaybackActivity.java b/src/org/kreed/vanilla/FullPlaybackActivity.java index 2b0479c4..10f666b4 100644 --- a/src/org/kreed/vanilla/FullPlaybackActivity.java +++ b/src/org/kreed/vanilla/FullPlaybackActivity.java @@ -22,6 +22,7 @@ package org.kreed.vanilla; +import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; import android.os.Bundle; @@ -74,6 +75,11 @@ public class FullPlaybackActivity extends PlaybackActivity implements SeekBar.On private boolean mSeekBarTracking; private boolean mPaused; + /** + * The current display mode, which determines layout and cover render style. + */ + private int mDisplayMode; + /** * Cached StringBuilder for formatting track position. */ @@ -87,6 +93,7 @@ public class FullPlaybackActivity extends PlaybackActivity implements SeekBar.On SharedPreferences settings = PlaybackService.getSettings(this); int displayMode = Integer.parseInt(settings.getString("display_mode", "0")); boolean hiddenControls = settings.getBoolean("hidden_controls", false); + mDisplayMode = displayMode; int layout = R.layout.full_playback; int coverStyle; @@ -144,6 +151,18 @@ public class FullPlaybackActivity extends PlaybackActivity implements SeekBar.On setDuration(0); } + @Override + public void onStart() + { + super.onStart(); + + SharedPreferences settings = PlaybackService.getSettings(this); + if (mDisplayMode != Integer.parseInt(settings.getString("display_mode", "0"))) { + finish(); + startActivity(new Intent(this, FullPlaybackActivity.class)); + } + } + @Override public void onResume() { diff --git a/src/org/kreed/vanilla/LibraryActivity.java b/src/org/kreed/vanilla/LibraryActivity.java index 4be8d237..18bbfda1 100644 --- a/src/org/kreed/vanilla/LibraryActivity.java +++ b/src/org/kreed/vanilla/LibraryActivity.java @@ -178,6 +178,10 @@ public class LibraryActivity extends PlaybackActivity implements AdapterView.OnI super.onStart(); SharedPreferences settings = PlaybackService.getSettings(this); + if (settings.getBoolean("controls_in_selector", false) != (mControls != null)) { + finish(); + startActivity(new Intent(this, LibraryActivity.class)); + } mDefaultAction = Integer.parseInt(settings.getString("default_action_int", "0")); mLastActedId = -2; updateHeaders(); diff --git a/src/org/kreed/vanilla/PlaybackService.java b/src/org/kreed/vanilla/PlaybackService.java index f7042b27..d034e385 100644 --- a/src/org/kreed/vanilla/PlaybackService.java +++ b/src/org/kreed/vanilla/PlaybackService.java @@ -393,18 +393,6 @@ public final class PlaybackService extends Service implements Handler.Callback, userActionTriggered(); } else if ("disable_cover_art".equals(key)) { Song.mDisableCoverArt = settings.getBoolean("disable_cover_art", false); - } else if ("display_mode".equals(key)) { - ArrayList activities = sActivities; - for (PlaybackActivity activity : activities) { - if (activity instanceof FullPlaybackActivity) - activity.finish(); - } - } else if ("controls_in_selector".equals(key)) { - ArrayList activities = sActivities; - for (PlaybackActivity activity : activities) { - if (activity instanceof LibraryActivity) - activity.finish(); - } } else if ("notification_inverted_color".equals(key)) { updateNotification(); } else if ("headset_only".equals(key)) {