OSDN Git Service

Close account settings if there's no account to show
authorAlexandra Gherghina <alexgherghina@google.com>
Tue, 21 Oct 2014 21:39:03 +0000 (22:39 +0100)
committerAlexandra Gherghina <alexgherghina@google.com>
Fri, 24 Oct 2014 16:00:38 +0000 (17:00 +0100)
This makes sure we don't keep the Settings screen on when there are no
accounts left to show.

Bug: 17713957
Change-Id: I6e1d6819477f051e3a521360aa3138b18fdd3fe2

src/com/android/settings/accounts/ManageAccountsSettings.java

index 074176b..2d8b70e 100644 (file)
@@ -99,8 +99,8 @@ public class ManageAccountsSettings extends AccountPreferenceBase
     }
 
     @Override
-    public void onStart() {
-        super.onStart();
+    public void onResume() {
+        super.onResume();
         mAuthenticatorHelper.listenToAccountUpdates();
         updateAuthDescriptions();
         showAccountsIfNeeded();
@@ -134,10 +134,15 @@ public class ManageAccountsSettings extends AccountPreferenceBase
     }
 
     @Override
+    public void onPause() {
+        super.onPause();
+        mAuthenticatorHelper.stopListeningToAccountUpdates();
+    }
+
+    @Override
     public void onStop() {
         super.onStop();
         final Activity activity = getActivity();
-        mAuthenticatorHelper.stopListeningToAccountUpdates();
         activity.getActionBar().setDisplayOptions(0, ActionBar.DISPLAY_SHOW_CUSTOM);
         activity.getActionBar().setCustomView(null);
     }
@@ -231,7 +236,7 @@ public class ManageAccountsSettings extends AccountPreferenceBase
 
     private void showSyncState() {
         // Catch any delayed delivery of update messages
-        if (getActivity() == null) return;
+        if (getActivity() == null || getActivity().isFinishing()) return;
 
         final int userId = mUserHandle.getIdentifier();
 
@@ -377,10 +382,8 @@ public class ManageAccountsSettings extends AccountPreferenceBase
         if (mAccountType != null && mFirstAccount != null) {
             addAuthenticatorSettings();
         } else {
-            // There's no account, reset to top-level of settings
-            Intent settingsTop = new Intent(android.provider.Settings.ACTION_SETTINGS);
-            settingsTop.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-            getActivity().startActivity(settingsTop);
+            // There's no account, close activity
+            finish();
         }
     }