diff options
author | Amith Yamasani <yamasani@google.com> | 2012-10-24 10:27:05 -0700 |
---|---|---|
committer | Amith Yamasani <yamasani@google.com> | 2012-10-24 13:57:01 -0700 |
commit | c666c65fab5e5db7ed0d1e5c53656e81969ea1f5 (patch) | |
tree | d32b09684cf893ba917087fd3fa779561833ae6d /src/com/android/settings | |
parent | e508a26e037c1b0a813575f1154da0ede7644979 (diff) | |
download | packages_apps_settings-c666c65fab5e5db7ed0d1e5c53656e81969ea1f5.zip packages_apps_settings-c666c65fab5e5db7ed0d1e5c53656e81969ea1f5.tar.gz packages_apps_settings-c666c65fab5e5db7ed0d1e5c53656e81969ea1f5.tar.bz2 |
Reduce jank in security lock selection by finishing on return
Earlier the finish of the chooser was happening before the pattern/pin chooser
was started, resulting in two transitions.
This change defers the finish to after returning from the other activity. There
is still sometimes a very small glitch on the way back, but much smaller than
the current problem.
Bug: 7342594
Change-Id: I5f4f4393b841ce31dc7236074381283155ebddbd
Diffstat (limited to 'src/com/android/settings')
-rw-r--r-- | src/com/android/settings/ChooseLockGeneric.java | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java index 0f9fcee..a899549 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/ChooseLockGeneric.java @@ -59,6 +59,7 @@ public class ChooseLockGeneric extends PreferenceActivity { private static final String PASSWORD_CONFIRMED = "password_confirmed"; private static final String CONFIRM_CREDENTIALS = "confirm_credentials"; private static final String WAITING_FOR_CONFIRMATION = "waiting_for_confirmation"; + private static final String FINISH_PENDING = "finish_pending"; public static final String MINIMUM_QUALITY_KEY = "minimum_quality"; private static final boolean ALWAY_SHOW_TUTORIAL = true; @@ -68,6 +69,7 @@ public class ChooseLockGeneric extends PreferenceActivity { private KeyStore mKeyStore; private boolean mPasswordConfirmed = false; private boolean mWaitingForConfirmation = false; + private boolean mFinishPending = false; @Override public void onCreate(Bundle savedInstanceState) { @@ -85,6 +87,7 @@ public class ChooseLockGeneric extends PreferenceActivity { if (savedInstanceState != null) { mPasswordConfirmed = savedInstanceState.getBoolean(PASSWORD_CONFIRMED); mWaitingForConfirmation = savedInstanceState.getBoolean(WAITING_FOR_CONFIRMATION); + mFinishPending = savedInstanceState.getBoolean(FINISH_PENDING); } if (mPasswordConfirmed) { @@ -101,7 +104,14 @@ public class ChooseLockGeneric extends PreferenceActivity { } } - + @Override + public void onResume() { + super.onResume(); + if (mFinishPending) { + mFinishPending = false; + finish(); + } + } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, @@ -170,6 +180,7 @@ public class ChooseLockGeneric extends PreferenceActivity { // Saved so we don't force user to re-enter their password if configuration changes outState.putBoolean(PASSWORD_CONFIRMED, mPasswordConfirmed); outState.putBoolean(WAITING_FOR_CONFIRMATION, mWaitingForConfirmation); + outState.putBoolean(FINISH_PENDING, mFinishPending); } private void updatePreferencesOrFinish() { @@ -352,10 +363,11 @@ public class ChooseLockGeneric extends PreferenceActivity { intent.putExtra(CONFIRM_CREDENTIALS, false); intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, isFallback); - if(isFallback) { + if (isFallback) { startActivityForResult(intent, FALLBACK_REQUEST); return; } else { + mFinishPending = true; intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(intent); } @@ -369,22 +381,26 @@ public class ChooseLockGeneric extends PreferenceActivity { intent.putExtra(CONFIRM_CREDENTIALS, false); intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, isFallback); - if(isFallback) { + if (isFallback) { startActivityForResult(intent, FALLBACK_REQUEST); return; } else { + mFinishPending = true; intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(intent); } } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_BIOMETRIC_WEAK) { Intent intent = getBiometricSensorIntent(); + mFinishPending = true; startActivity(intent); } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { mChooseLockSettingsHelper.utils().clearLock(false); mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled); getActivity().setResult(Activity.RESULT_OK); + finish(); + } else { + finish(); } - finish(); } @Override |