diff options
author | d34d <clark@cyngn.com> | 2016-03-24 09:34:41 -0700 |
---|---|---|
committer | d34d <clark@cyngn.com> | 2016-03-30 19:17:09 -0700 |
commit | 39b2d6dead3911a7fc9b5da31e85ef36fc213c8f (patch) | |
tree | 4213ba0baad5206a1d3df02f7728be32006d75db /packages/SystemUI/src/com | |
parent | 5d7282dd4ee5efd5beee4dd22b32a1e114336021 (diff) | |
download | frameworks_base-39b2d6dead3911a7fc9b5da31e85ef36fc213c8f.zip frameworks_base-39b2d6dead3911a7fc9b5da31e85ef36fc213c8f.tar.gz frameworks_base-39b2d6dead3911a7fc9b5da31e85ef36fc213c8f.tar.bz2 |
LLS: Use window attachment callbacks
Change-Id: Ie25585a120638fb7254bdf43e767aae3c68623e0
Diffstat (limited to 'packages/SystemUI/src/com')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/policy/LiveLockScreenController.java | 63 |
1 files changed, 43 insertions, 20 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LiveLockScreenController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LiveLockScreenController.java index 65fd093..a338bf3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LiveLockScreenController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LiveLockScreenController.java @@ -188,36 +188,59 @@ public class LiveLockScreenController { return mLiveLockScreenView; } + private Runnable mAddNewLiveLockScreenRunnable = new Runnable() { + @Override + public void run() { + if (mLiveLockScreenComponentName != null) { + mLiveLockScreenView = + getExternalKeyguardView(mLiveLockScreenComponentName); + mLiveLockScreenView.registerKeyguardExternalViewCallback( + mExternalKeyguardViewCallbacks); + if (mStatusBarState != StatusBarState.SHADE) { + mPanelView.addView(mLiveLockScreenView); + mLiveLockScreenView.onKeyguardShowing(true); + } + } else { + mLiveLockScreenView = null; + } + } + }; + private void updateLiveLockScreenView(final ComponentName cn) { - // If mThirdPartyKeyguardViewComponent differs from cn, go ahead and update - if (!Objects.equals(mLiveLockScreenComponentName, cn)) { - mHandler.post(new Runnable() { - @Override - public void run() { + mHandler.post(new Runnable() { + @Override + public void run() { + // If mThirdPartyKeyguardViewComponent differs from cn, go ahead and update + if (!Objects.equals(mLiveLockScreenComponentName, cn)) { mLiveLockScreenComponentName = cn; if (mLiveLockScreenView != null) { - if (mPanelView.indexOfChild(mLiveLockScreenView) >= 0) { - mPanelView.removeView(mLiveLockScreenView); - } mLiveLockScreenView.unregisterKeyguardExternalViewCallback( mExternalKeyguardViewCallbacks); // setProviderComponent(null) will unbind the existing service mLiveLockScreenView.setProviderComponent(null); - if (mLiveLockScreenComponentName != null) { - mLiveLockScreenView = - getExternalKeyguardView(mLiveLockScreenComponentName); - mLiveLockScreenView.registerKeyguardExternalViewCallback( - mExternalKeyguardViewCallbacks); - if (mStatusBarState != StatusBarState.SHADE) { - mPanelView.addView(mLiveLockScreenView); - mLiveLockScreenView.onKeyguardShowing(true); - } + if (mPanelView.indexOfChild(mLiveLockScreenView) >= 0) { + mLiveLockScreenView.registerOnWindowAttachmentChangedListener( + new KeyguardExternalView.OnWindowAttachmentChangedListener() { + @Override + public void onAttachedToWindow() { + } + + @Override + public void onDetachedFromWindow() { + mLiveLockScreenView + .unregisterOnWindowAttachmentChangedListener( + this); + mHandler.post(mAddNewLiveLockScreenRunnable); + } + } + ); + mPanelView.removeView(mLiveLockScreenView); } else { - mLiveLockScreenView = null; + mAddNewLiveLockScreenRunnable.run(); } } } - }); - } + } + }); } } |