summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com
diff options
context:
space:
mode:
authord34d <clark@cyngn.com>2016-03-24 09:34:41 -0700
committerd34d <clark@cyngn.com>2016-03-30 19:17:09 -0700
commit39b2d6dead3911a7fc9b5da31e85ef36fc213c8f (patch)
tree4213ba0baad5206a1d3df02f7728be32006d75db /packages/SystemUI/src/com
parent5d7282dd4ee5efd5beee4dd22b32a1e114336021 (diff)
downloadframeworks_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.java63
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();
}
}
}
- });
- }
+ }
+ });
}
}