diff options
author | John Reck <jreck@google.com> | 2014-03-06 22:06:20 +0000 |
---|---|---|
committer | John Reck <jreck@google.com> | 2014-03-06 14:12:35 -0800 |
commit | b14dfe20ef300c47cc5cdfbd844c21f7fd302f0c (patch) | |
tree | 894d9b7652c64bd77185c064433d0271b2f4569b | |
parent | acbc41d656be91854d9c128aee06b5ecc9f54528 (diff) | |
download | frameworks_base-b14dfe20ef300c47cc5cdfbd844c21f7fd302f0c.zip frameworks_base-b14dfe20ef300c47cc5cdfbd844c21f7fd302f0c.tar.gz frameworks_base-b14dfe20ef300c47cc5cdfbd844c21f7fd302f0c.tar.bz2 |
Revert "Revert "Workaround apps not calling super.onDetachedFromWindow()""
This reverts commit bac16fae7e6fceb1e516252ede673844b772e7c3.
Change-Id: I61e997b23fac1aa984129fdc0328426ff8891bdd
-rw-r--r-- | core/java/android/view/SurfaceView.java | 5 | ||||
-rw-r--r-- | core/java/android/view/TextureView.java | 5 | ||||
-rw-r--r-- | core/java/android/view/View.java | 14 | ||||
-rw-r--r-- | core/java/android/widget/TextView.java | 7 | ||||
-rw-r--r-- | opengl/java/android/opengl/GLSurfaceView.java | 10 |
5 files changed, 27 insertions, 14 deletions
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index 9b23b35..1f211c2 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -255,8 +255,9 @@ public class SurfaceView extends View { updateWindow(false, false); } + /** @hide */ @Override - protected void onDetachedFromWindow() { + protected void onDetachedFromWindowInternal() { if (mGlobalListenersAdded) { ViewTreeObserver observer = getViewTreeObserver(); observer.removeOnScrollChangedListener(mScrollChangedListener); @@ -278,7 +279,7 @@ public class SurfaceView extends View { mSession = null; mLayout.token = null; - super.onDetachedFromWindow(); + super.onDetachedFromWindowInternal(); } @Override diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java index ef0d80d..3cfe5e9 100644 --- a/core/java/android/view/TextureView.java +++ b/core/java/android/view/TextureView.java @@ -228,10 +228,11 @@ public class TextureView extends View { } } + /** @hide */ @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); + protected void onDetachedFromWindowInternal() { destroySurface(); + super.onDetachedFromWindowInternal(); } private void destroySurface() { diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index afa63a2..827c4cc 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -13116,6 +13116,19 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * @see #onAttachedToWindow() */ protected void onDetachedFromWindow() { + } + + /** + * This is a framework-internal mirror of onDetachedFromWindow() that's called + * after onDetachedFromWindow(). + * + * If you override this you *MUST* call super.onDetachedFromWindowInternal()! + * The super method should be called at the end of the overriden method to ensure + * subclasses are destroyed first + * + * @hide + */ + protected void onDetachedFromWindowInternal() { mPrivateFlags &= ~PFLAG_CANCEL_NEXT_UP_EVENT; mPrivateFlags3 &= ~PFLAG3_IS_LAID_OUT; @@ -13303,6 +13316,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } onDetachedFromWindow(); + onDetachedFromWindowInternal(); ListenerInfo li = mListenerInfo; final CopyOnWriteArrayList<OnAttachStateChangeListener> listeners = diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index e5cb16f..687036c 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -4729,10 +4729,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (mEditor != null) mEditor.onAttachedToWindow(); } + /** @hide */ @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - + protected void onDetachedFromWindowInternal() { if (mPreDrawRegistered) { getViewTreeObserver().removeOnPreDrawListener(this); mPreDrawRegistered = false; @@ -4741,6 +4740,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener resetResolvedDrawables(); if (mEditor != null) mEditor.onDetachedFromWindow(); + + super.onDetachedFromWindowInternal(); } @Override diff --git a/opengl/java/android/opengl/GLSurfaceView.java b/opengl/java/android/opengl/GLSurfaceView.java index 5a2e261..a9322b9 100644 --- a/opengl/java/android/opengl/GLSurfaceView.java +++ b/opengl/java/android/opengl/GLSurfaceView.java @@ -595,13 +595,9 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback mDetached = false; } - /** - * This method is used as part of the View class and is not normally - * called or subclassed by clients of GLSurfaceView. - * Must not be called before a renderer has been set. - */ + /** @hide */ @Override - protected void onDetachedFromWindow() { + protected void onDetachedFromWindowInternal() { if (LOG_ATTACH_DETACH) { Log.d(TAG, "onDetachedFromWindow"); } @@ -609,7 +605,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback mGLThread.requestExitAndWait(); } mDetached = true; - super.onDetachedFromWindow(); + super.onDetachedFromWindowInternal(); } // ---------------------------------------------------------------------- |