1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.app; 18 19 import android.app.ActivityManager.RunningTaskInfo; 20 import android.compat.annotation.UnsupportedAppUsage; 21 import android.content.ComponentName; 22 import android.os.Build; 23 import android.os.RemoteException; 24 import android.window.TaskSnapshot; 25 26 /** 27 * Classes interested in observing only a subset of changes using ITaskStackListener can extend 28 * this class to avoid having to implement all the methods. 29 * 30 * @hide 31 */ 32 public abstract class TaskStackListener extends ITaskStackListener.Stub { 33 34 /** Whether this listener and the callback dispatcher are in different processes. */ 35 private boolean mIsRemote = true; 36 37 @UnsupportedAppUsage TaskStackListener()38 public TaskStackListener() { 39 } 40 41 /** Indicates that this listener lives in system server. */ setIsLocal()42 public void setIsLocal() { 43 mIsRemote = false; 44 } 45 46 @Override 47 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onTaskStackChanged()48 public void onTaskStackChanged() throws RemoteException { 49 } 50 51 @Override 52 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onActivityPinned(String packageName, int userId, int taskId, int rootTaskId)53 public void onActivityPinned(String packageName, int userId, int taskId, int rootTaskId) 54 throws RemoteException { 55 } 56 57 @Override 58 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onActivityUnpinned()59 public void onActivityUnpinned() throws RemoteException { 60 } 61 62 @Override 63 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onActivityRestartAttempt(RunningTaskInfo task, boolean homeTaskVisible, boolean clearedTask, boolean wasVisible)64 public void onActivityRestartAttempt(RunningTaskInfo task, boolean homeTaskVisible, 65 boolean clearedTask, boolean wasVisible) throws RemoteException { 66 } 67 68 @Override 69 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onActivityForcedResizable(String packageName, int taskId, int reason)70 public void onActivityForcedResizable(String packageName, int taskId, int reason) 71 throws RemoteException { 72 } 73 74 @Override 75 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onActivityDismissingDockedTask()76 public void onActivityDismissingDockedTask() throws RemoteException { 77 } 78 79 @Override onActivityLaunchOnSecondaryDisplayFailed(RunningTaskInfo taskInfo, int requestedDisplayId)80 public void onActivityLaunchOnSecondaryDisplayFailed(RunningTaskInfo taskInfo, 81 int requestedDisplayId) throws RemoteException { 82 onActivityLaunchOnSecondaryDisplayFailed(); 83 } 84 85 /** 86 * @deprecated see {@link 87 * #onActivityLaunchOnSecondaryDisplayFailed(RunningTaskInfo, int)} 88 */ 89 @Deprecated 90 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onActivityLaunchOnSecondaryDisplayFailed()91 public void onActivityLaunchOnSecondaryDisplayFailed() throws RemoteException { 92 } 93 94 @Override 95 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onActivityLaunchOnSecondaryDisplayRerouted(RunningTaskInfo taskInfo, int requestedDisplayId)96 public void onActivityLaunchOnSecondaryDisplayRerouted(RunningTaskInfo taskInfo, 97 int requestedDisplayId) throws RemoteException { 98 } 99 100 @Override onTaskCreated(int taskId, ComponentName componentName)101 public void onTaskCreated(int taskId, ComponentName componentName) throws RemoteException { 102 } 103 104 @Override 105 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onTaskRemoved(int taskId)106 public void onTaskRemoved(int taskId) throws RemoteException { 107 } 108 109 @Override onTaskMovedToFront(RunningTaskInfo taskInfo)110 public void onTaskMovedToFront(RunningTaskInfo taskInfo) 111 throws RemoteException { 112 onTaskMovedToFront(taskInfo.taskId); 113 } 114 115 /** 116 * @deprecated see {@link #onTaskMovedToFront(RunningTaskInfo)} 117 */ 118 @Deprecated 119 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onTaskMovedToFront(int taskId)120 public void onTaskMovedToFront(int taskId) throws RemoteException { 121 } 122 123 @Override onTaskRemovalStarted(RunningTaskInfo taskInfo)124 public void onTaskRemovalStarted(RunningTaskInfo taskInfo) 125 throws RemoteException { 126 onTaskRemovalStarted(taskInfo.taskId); 127 } 128 129 /** 130 * @deprecated see {@link #onTaskRemovalStarted(RunningTaskInfo)} 131 */ 132 @Deprecated onTaskRemovalStarted(int taskId)133 public void onTaskRemovalStarted(int taskId) throws RemoteException { 134 } 135 136 @Override onTaskDescriptionChanged(RunningTaskInfo taskInfo)137 public void onTaskDescriptionChanged(RunningTaskInfo taskInfo) 138 throws RemoteException { 139 onTaskDescriptionChanged(taskInfo.taskId, taskInfo.taskDescription); 140 } 141 142 /** 143 * @deprecated see {@link #onTaskDescriptionChanged(RunningTaskInfo)} 144 */ 145 @Deprecated onTaskDescriptionChanged(int taskId, ActivityManager.TaskDescription td)146 public void onTaskDescriptionChanged(int taskId, ActivityManager.TaskDescription td) 147 throws RemoteException { 148 } 149 150 @Override 151 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onActivityRequestedOrientationChanged(int taskId, int requestedOrientation)152 public void onActivityRequestedOrientationChanged(int taskId, int requestedOrientation) 153 throws RemoteException { 154 } 155 156 @Override onTaskProfileLocked(RunningTaskInfo taskInfo, int userId)157 public void onTaskProfileLocked(RunningTaskInfo taskInfo, int userId) 158 throws RemoteException { 159 onTaskProfileLocked(taskInfo); 160 } 161 162 /** 163 * @deprecated see {@link #onTaskProfileLocked(RunningTaskInfo, int)} 164 */ 165 @Deprecated 166 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onTaskProfileLocked(RunningTaskInfo taskInfo)167 public void onTaskProfileLocked(RunningTaskInfo taskInfo) 168 throws RemoteException { 169 } 170 171 @Override 172 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) onTaskSnapshotChanged(int taskId, TaskSnapshot snapshot)173 public void onTaskSnapshotChanged(int taskId, TaskSnapshot snapshot) throws RemoteException { 174 if (mIsRemote && snapshot != null && snapshot.getHardwareBuffer() != null) { 175 // Preemptively clear any reference to the buffer 176 snapshot.getHardwareBuffer().close(); 177 } 178 } 179 180 @Override onBackPressedOnTaskRoot(RunningTaskInfo taskInfo)181 public void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) 182 throws RemoteException { 183 } 184 185 @Override onTaskDisplayChanged(int taskId, int newDisplayId)186 public void onTaskDisplayChanged(int taskId, int newDisplayId) throws RemoteException { 187 } 188 189 @Override onRecentTaskListUpdated()190 public void onRecentTaskListUpdated() throws RemoteException { 191 } 192 193 @Override onRecentTaskListFrozenChanged(boolean frozen)194 public void onRecentTaskListFrozenChanged(boolean frozen) { 195 } 196 197 @Override onTaskFocusChanged(int taskId, boolean focused)198 public void onTaskFocusChanged(int taskId, boolean focused) { 199 } 200 201 @Override onTaskRequestedOrientationChanged(int taskId, int requestedOrientation)202 public void onTaskRequestedOrientationChanged(int taskId, int requestedOrientation) { 203 } 204 205 @Override onActivityRotation(int displayId)206 public void onActivityRotation(int displayId) { 207 } 208 209 @Override onTaskMovedToBack(RunningTaskInfo taskInfo)210 public void onTaskMovedToBack(RunningTaskInfo taskInfo) { 211 } 212 213 @Override onLockTaskModeChanged(int mode)214 public void onLockTaskModeChanged(int mode) { 215 } 216 } 217