From 19fc117c2f8f0719aa40a1ff0efe27e2bd6d1efc Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Thu, 31 Jul 2014 18:40:03 -0700 Subject: [PATCH] Unregistering receiver in onStart/Stop vs onCreate/Destroy. (Bug 16513124) Change-Id: I11ccc3cea41311d74811dc19e6950da3bbddbfe2 --- .../android/systemui/recents/RecentsActivity.java | 13 +++++++++---- .../android/systemui/recents/views/RecentsView.java | 11 +++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java index 45348976d4989..75fbad880bd55 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java @@ -383,9 +383,6 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView filter.addAction(SearchManager.INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED); registerReceiver(mSystemBroadcastReceiver, filter); - // Register any broadcast receivers for the task loader - RecentsTaskLoader.getInstance().registerReceivers(this, mRecentsView); - // Private API calls to make the shadows look better try { Utilities.setShadowProperty("ambientShadowStrength", String.valueOf(35f)); @@ -451,6 +448,9 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView filter.addAction(ACTION_TOGGLE_RECENTS_ACTIVITY); filter.addAction(ACTION_START_ENTER_ANIMATION); registerReceiver(mServiceBroadcastReceiver, filter); + + // Register any broadcast receivers for the task loader + RecentsTaskLoader.getInstance().registerReceivers(this, mRecentsView); } @Override @@ -481,9 +481,15 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView protected void onStop() { super.onStop(); + // Remove all the views + mRecentsView.removeAllTaskStacks(); + // Unregister the RecentsService receiver unregisterReceiver(mServiceBroadcastReceiver); + // Unregister any broadcast receivers for the task loader + RecentsTaskLoader.getInstance().unregisterReceivers(); + // Stop listening for widget package changes if there was one bound if (mAppWidgetHost.isListening()) { mAppWidgetHost.stopListening(); @@ -496,7 +502,6 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView // Unregister the system broadcast receivers unregisterReceiver(mSystemBroadcastReceiver); - RecentsTaskLoader.getInstance().unregisterReceivers(); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java index cd2cbe723d883..1a32b81c767e7 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java @@ -121,6 +121,17 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV } } + /** Removes all the task stack views from this recents view. */ + public void removeAllTaskStacks() { + int childCount = getChildCount(); + for (int i = childCount - 1; i >= 0; i--) { + View child = getChildAt(i); + if (child != mSearchBar) { + removeViewAt(i); + } + } + } + /** Launches the focused task from the first stack if possible */ public boolean launchFocusedTask() { // Get the first stack view