From 3f6a4e9d5cfcce33eb5db800f04452a3ab1a7643 Mon Sep 17 00:00:00 2001 From: Galia Peycheva Date: Fri, 20 Jan 2023 11:02:21 +0000 Subject: [PATCH] Make DreamService detach on DreamActivity onDestroy Currently DreamService.onDestroy is called whenever the DreamActivity is being destroyed. This causes issues with the lifecycle of the dream window, because the DreamService is destroyed before onDetachedFromWindow is called. In this CL, we change the implementation of onActivityDestroyed to detach the DreamService instead of destroy it immediately. This is a more gentle way to achieve the same result. Bug: 243385408 Bug: 266668856 Bug: 270913936 Test: atest DreamServiceManagerTests Test: atest DreamServiceTests Test: atest DreamOverlayTest Change-Id: Iadb7880faabf54f70a64c76c6e3e267fde9c42dd --- core/java/android/service/dreams/DreamActivity.java | 2 +- core/java/android/service/dreams/DreamService.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/java/android/service/dreams/DreamActivity.java b/core/java/android/service/dreams/DreamActivity.java index ff14404f787e6..a3892238f1e6a 100644 --- a/core/java/android/service/dreams/DreamActivity.java +++ b/core/java/android/service/dreams/DreamActivity.java @@ -70,7 +70,7 @@ public class DreamActivity extends Activity { @Override public void onDestroy() { - if (mCallback != null && !isFinishing()) { + if (mCallback != null) { mCallback.onActivityDestroyed(); } diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java index d79ea8929047e..c7099fdd202ad 100644 --- a/core/java/android/service/dreams/DreamService.java +++ b/core/java/android/service/dreams/DreamService.java @@ -1588,7 +1588,8 @@ public class DreamService extends Service implements Window.Callback { // If DreamActivity is destroyed, wake up from Dream. void onActivityDestroyed() { mActivity = null; - onDestroy(); + mWindow = null; + detach(); } }