Merge "Don't reference framework strings." into nyc-dev
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
index 5109edd..790d99b 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
@@ -32,6 +32,8 @@
 
 public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivity {
 
+    private static final String SAVE_KEY_TITLE = "activity_title";
+
     private boolean mSendExtraWindowStateChanged;
 
     @Override
@@ -62,6 +64,18 @@
     }
 
     @Override
+    protected void onSaveInstanceState(Bundle savedState) {
+        savedState.putCharSequence(SAVE_KEY_TITLE, getTitle());
+        super.onSaveInstanceState(savedState);
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Bundle savedState) {
+        super.onRestoreInstanceState(savedState);
+        setTitle(savedState.getCharSequence(SAVE_KEY_TITLE));
+    }
+
+    @Override
     public void onResume() {
         super.onResume();
         mSendExtraWindowStateChanged = false;
diff --git a/src/com/android/settings/dashboard/SummaryLoader.java b/src/com/android/settings/dashboard/SummaryLoader.java
index 5019844..e6c1243 100644
--- a/src/com/android/settings/dashboard/SummaryLoader.java
+++ b/src/com/android/settings/dashboard/SummaryLoader.java
@@ -46,6 +46,7 @@
     private final HandlerThread mWorkerThread;
 
     private DashboardAdapter mAdapter;
+    private boolean mListening;
 
     public SummaryLoader(Activity activity, List<DashboardCategory> categories) {
         mHandler = new Handler();
@@ -64,6 +65,8 @@
 
     public void release() {
         mWorkerThread.quitSafely();
+        // Make sure we aren't listening.
+        setListeningW(false);
     }
 
     public void setAdapter(DashboardAdapter adapter) {
@@ -122,6 +125,27 @@
         return tile.metaData;
     }
 
+    private synchronized void setListeningW(boolean listening) {
+        if (mListening == listening) return;
+        if (DEBUG) Log.d(TAG, "Listening " + listening);
+        for (SummaryProvider p : mSummaryMap.keySet()) {
+            p.setListening(listening);
+        }
+        mListening = listening;
+    }
+
+    private synchronized void makeProviderW(Tile tile) {
+        SummaryProvider provider = getSummaryProvider(tile);
+        if (provider != null) {
+            if (DEBUG) Log.d(TAG, "Creating " + tile);
+            mSummaryMap.put(provider, tile);
+            if (mListening) {
+                // If we are somehow already listening, put the provider in that state.
+                provider.setListening(true);
+            }
+        }
+    }
+
     public interface SummaryProvider {
         void setListening(boolean listening);
     }
@@ -143,18 +167,11 @@
             switch (msg.what) {
                 case MSG_GET_PROVIDER:
                     Tile tile = (Tile) msg.obj;
-                    SummaryProvider provider = getSummaryProvider(tile);
-                    if (provider != null) {
-                        if (DEBUG) Log.d(TAG, "Creating " + tile);
-                        mSummaryMap.put(provider, tile);
-                    }
+                    makeProviderW(tile);
                     break;
                 case MSG_SET_LISTENING:
                     boolean listening = msg.arg1 != 0;
-                    if (DEBUG) Log.d(TAG, "Listening " + listening);
-                    for (SummaryProvider p : mSummaryMap.keySet()) {
-                        p.setListening(listening);
-                    }
+                    setListeningW(listening);
                     break;
             }
         }