Unregistering receiver in onStart/Stop vs onCreate/Destroy. (Bug 16513124)
Change-Id: I11ccc3cea41311d74811dc19e6950da3bbddbfe2
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
index 4534897..75fbad8 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 @@
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 @@
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 @@
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 @@
// 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 189578c..9beda3c 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 @@
}
}
+ /** 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