diff options
Diffstat (limited to 'core/java/android/window/VirtualDisplayTaskEmbedder.java')
| -rw-r--r-- | core/java/android/window/VirtualDisplayTaskEmbedder.java | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/core/java/android/window/VirtualDisplayTaskEmbedder.java b/core/java/android/window/VirtualDisplayTaskEmbedder.java index 0f26d5d00f6d..70164692032f 100644 --- a/core/java/android/window/VirtualDisplayTaskEmbedder.java +++ b/core/java/android/window/VirtualDisplayTaskEmbedder.java @@ -67,6 +67,7 @@ public class VirtualDisplayTaskEmbedder extends TaskEmbedder { private VirtualDisplay mVirtualDisplay; private Insets mForwardedInsets; private DisplayMetrics mTmpDisplayMetrics; + private TaskStackListener mTaskStackListener; /** * Constructs a new TaskEmbedder. @@ -82,11 +83,6 @@ public class VirtualDisplayTaskEmbedder extends TaskEmbedder { mSingleTaskInstance = singleTaskInstance; } - @Override - public TaskStackListener createTaskStackListener() { - return new TaskStackListenerImpl(); - } - /** * Whether this container has been initialized. * @@ -124,6 +120,9 @@ public class VirtualDisplayTaskEmbedder extends TaskEmbedder { .setDisplayToSingleTaskInstance(displayId); } setForwardedInsets(mForwardedInsets); + + mTaskStackListener = new TaskStackListenerImpl(); + mActivityTaskManager.registerTaskStackListener(mTaskStackListener); } catch (RemoteException e) { e.rethrowAsRuntimeException(); } @@ -142,6 +141,15 @@ public class VirtualDisplayTaskEmbedder extends TaskEmbedder { // Clear tap-exclude region (if any) for this window. clearTapExcludeRegion(); + if (mTaskStackListener != null) { + try { + mActivityTaskManager.unregisterTaskStackListener(mTaskStackListener); + } catch (RemoteException e) { + Log.e(TAG, "Failed to unregister task stack listener", e); + } + mTaskStackListener = null; + } + if (isInitialized()) { mVirtualDisplay.release(); mVirtualDisplay = null; |
