diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 482ef2d1a6fd8..74a9819c925fa 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -1387,7 +1387,15 @@ public class Activity extends ContextThemeWrapper if (mAutoFillResetNeeded) { if (!mAutoFillIgnoreFirstResumePause) { View focus = getCurrentFocus(); - if (focus != null && focus.canNotifyAutofillEnterExitEvent()) { + // On Activity rotation situation (mRestoredFromBundle is true), + // we should not call on AutofillManager in onResume() + // since the next Layout pass will do that. + // However, there are both cases where Activity#getCurrentFocus() + // will return null (window not preserved) and not null (window IS + // preserved), so we need to explicitly check for mRestoredFromBundle + // here. + if (!mRestoredFromBundle && focus != null + && focus.canNotifyAutofillEnterExitEvent()) { // TODO: in Activity killed/recreated case, i.e. SessionLifecycleTest# // testDatasetVisibleWhileAutofilledAppIsLifecycled: the View's initial // window visibility after recreation is INVISIBLE in onResume() and next frame