From 88957ef8ee5be004b9c330f483a6c6855d5ca853 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Thu, 10 Sep 2015 21:24:22 -0700 Subject: [PATCH] Add timeout if we dont get onEnterAnimationComplete Window manager doesn't send us onEnterAnimationComplete in the case where there are two activites starting at the same time and the screen orientation is changing. Add a timeout to work around this until we have a proper fix. Bug: 23849216 Change-Id: I4be7787d1bc13f8cb0ffd892010c4b5c0142c783 --- .../ConfirmDeviceCredentialBaseActivity.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java index 176efbc6a48..d9af800cec4 100644 --- a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java +++ b/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java @@ -19,6 +19,7 @@ package com.android.settings; import android.app.Fragment; import android.app.KeyguardManager; import android.os.Bundle; +import android.os.Handler; import android.view.MenuItem; import android.view.WindowManager; @@ -28,6 +29,7 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi private boolean mDark; private boolean mEnterAnimationPending; private boolean mFirstTimeVisible = true; + private final Handler mHandler = new Handler(); @Override protected void onCreate(Bundle savedState) { @@ -67,6 +69,7 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi mFirstTimeVisible = false; prepareEnterAnimation(); mEnterAnimationPending = true; + mHandler.postDelayed(mEnterAnimationCompleteTimeoutRunnable, 1000); } } @@ -82,6 +85,7 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi public void onEnterAnimationComplete() { super.onEnterAnimationComplete(); if (mEnterAnimationPending) { + mHandler.removeCallbacks(mEnterAnimationCompleteTimeoutRunnable); startEnterAnimation(); mEnterAnimationPending = false; } @@ -94,4 +98,15 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi public void startEnterAnimation() { getFragment().startEnterAnimation(); } + + /** + * Workaround for a bug in window manager which results that onEnterAnimationComplete doesn't + * get called in all cases. + */ + private final Runnable mEnterAnimationCompleteTimeoutRunnable = new Runnable() { + @Override + public void run() { + onEnterAnimationComplete(); + } + }; }