Force remove DreamActivity from system server
Bug: 243385408
Test: comment out the finishAndRemoveTask lines from DreamService and
run `atest DreamManagerServiceTests#testForceStopStubbornDream`
(this test fails without this CL)
Test: atest DreamServiceTest
Test: atest DreamManagerServiceTests
Test: atest SystemDreamTest
Change-Id: I7f3c25ef63ea0a01ed8b466ef2be2658b60c623b
This commit is contained in:
@@ -16,6 +16,9 @@
|
||||
|
||||
package com.android.server.dreams;
|
||||
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM;
|
||||
|
||||
import android.app.ActivityTaskManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -34,8 +37,6 @@ import android.os.UserHandle;
|
||||
import android.service.dreams.DreamService;
|
||||
import android.service.dreams.IDreamService;
|
||||
import android.util.Slog;
|
||||
import android.view.IWindowManager;
|
||||
import android.view.WindowManagerGlobal;
|
||||
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
@@ -60,7 +61,7 @@ final class DreamController {
|
||||
private final Context mContext;
|
||||
private final Handler mHandler;
|
||||
private final Listener mListener;
|
||||
private final IWindowManager mIWindowManager;
|
||||
private final ActivityTaskManager mActivityTaskManager;
|
||||
private long mDreamStartTime;
|
||||
private String mSavedStopReason;
|
||||
|
||||
@@ -93,7 +94,7 @@ final class DreamController {
|
||||
mContext = context;
|
||||
mHandler = handler;
|
||||
mListener = listener;
|
||||
mIWindowManager = WindowManagerGlobal.getWindowManagerService();
|
||||
mActivityTaskManager = mContext.getSystemService(ActivityTaskManager.class);
|
||||
mCloseNotificationShadeIntent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
|
||||
mCloseNotificationShadeIntent.putExtra("reason", "dream");
|
||||
}
|
||||
@@ -229,6 +230,8 @@ final class DreamController {
|
||||
}
|
||||
oldDream.releaseWakeLockIfNeeded();
|
||||
|
||||
mActivityTaskManager.removeRootTasksWithActivityTypes(new int[] {ACTIVITY_TYPE_DREAM});
|
||||
|
||||
mHandler.post(() -> mListener.onDreamStopped(oldDream.mToken));
|
||||
} finally {
|
||||
Trace.traceEnd(Trace.TRACE_TAG_POWER);
|
||||
|
||||
Reference in New Issue
Block a user