Loading core/java/android/app/ActivityClient.java +33 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import android.os.RemoteException; import android.util.Singleton; import android.view.RemoteAnimationDefinition; import com.android.internal.policy.IKeyguardDismissCallback; /** * Provides the activity associated operations that communicate with system. * Loading Loading @@ -431,6 +433,37 @@ public class ActivityClient { } } /** * Restart the process and activity to adopt the latest configuration for size compat mode. * This only takes effect for visible activity because invisible background activity can be * restarted naturally when it becomes visible. */ public void restartActivityProcessIfVisible(IBinder token) { try { getActivityClientController().restartActivityProcessIfVisible(token); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** Removes the snapshot of home task. */ public void invalidateHomeTaskSnapshot(IBinder homeToken) { try { getActivityClientController().invalidateHomeTaskSnapshot(homeToken); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } void dismissKeyguard(IBinder token, IKeyguardDismissCallback callback, CharSequence message) { try { getActivityClientController().dismissKeyguard(token, callback, message); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } void registerRemoteAnimations(IBinder token, RemoteAnimationDefinition definition) { try { getActivityClientController().registerRemoteAnimations(token, definition); Loading core/java/android/app/IActivityClientController.aidl +23 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import android.os.Bundle; import android.os.PersistableBundle; import android.view.RemoteAnimationDefinition; import com.android.internal.policy.IKeyguardDismissCallback; /** * Interface for the callback and request from an activity to system. * Loading Loading @@ -95,6 +97,27 @@ interface IActivityClientController { /** See {@link android.app.Activity#setDisablePreviewScreenshots}. */ oneway void setDisablePreviewScreenshots(in IBinder token, boolean disable); /** * Restarts the activity by killing its process if it is visible. If the activity is not * visible, the activity will not be restarted immediately and just keep the activity record in * the stack. It also resets the current override configuration so the activity will use the * configuration according to the latest state. * * @param activityToken The token of the target activity to restart. */ void restartActivityProcessIfVisible(in IBinder activityToken); /** * It should only be called from home activity to remove its outdated snapshot. The home * snapshot is used to speed up entering home from screen off. If the content of home activity * is significantly different from before taking the snapshot, then the home activity can use * this method to avoid inconsistent transition. */ void invalidateHomeTaskSnapshot(IBinder homeToken); void dismissKeyguard(in IBinder token, in IKeyguardDismissCallback callback, in CharSequence message); /** Registers remote animations for a specific activity. */ void registerRemoteAnimations(in IBinder token, in RemoteAnimationDefinition definition); Loading core/java/android/app/IActivityTaskManager.aidl +0 −24 Original line number Diff line number Diff line Loading @@ -72,7 +72,6 @@ import android.view.RemoteAnimationAdapter; import android.window.IWindowOrganizerController; import com.android.internal.app.IVoiceInteractor; import com.android.internal.os.IResultReceiver; import com.android.internal.policy.IKeyguardDismissCallback; import java.util.List; Loading @@ -85,8 +84,6 @@ import java.util.List; // TODO(b/174040395): Make this interface private to ActivityTaskManager.java and have external // caller go through that call instead. This would help us better separate and control the API // surface exposed. // TODO(b/174041144): Move callback methods from Activity (Things that take param 'IBinder token') // to a separate interface that is only available to the Activity. // TODO(b/174041603): Create a builder interface for things like startActivityXXX(...) to reduce // interface duplication. // TODO(b/174040691): Clean-up/remove all obsolete or unused interfaces like things that should be Loading Loading @@ -294,9 +291,6 @@ interface IActivityTaskManager { // Get device configuration ConfigurationInfo getDeviceConfigurationInfo(); void dismissKeyguard(in IBinder token, in IKeyguardDismissCallback callback, in CharSequence message); /** Cancels the window transitions for the given task. */ void cancelTaskWindowTransition(int taskId); Loading @@ -308,14 +302,6 @@ interface IActivityTaskManager { */ android.window.TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution); /** * It should only be called from home activity to remove its outdated snapshot. The home * snapshot is used to speed up entering home from screen off. If the content of home activity * is significantly different from before taking the snapshot, then the home activity can use * this method to avoid inconsistent transition. */ void invalidateHomeTaskSnapshot(IBinder homeToken); /** * Return the user id of last resumed activity. */ Loading Loading @@ -362,14 +348,4 @@ interface IActivityTaskManager { * Clears launch params for given packages. */ void clearLaunchParamsForPackages(in List<String> packageNames); /** * Restarts the activity by killing its process if it is visible. If the activity is not * visible, the activity will not be restarted immediately and just keep the activity record in * the stack. It also resets the current override configuration so the activity will use the * configuration according to the latest state. * * @param activityToken The token of the target activity to restart. */ void restartActivityProcessIfVisible(in IBinder activityToken); } core/java/android/app/KeyguardManager.java +18 −22 Original line number Diff line number Diff line Loading @@ -598,8 +598,7 @@ public class KeyguardManager { @SystemApi public void requestDismissKeyguard(@NonNull Activity activity, @Nullable CharSequence message, @Nullable KeyguardDismissCallback callback) { try { ActivityTaskManager.getService().dismissKeyguard( ActivityClient.getInstance().dismissKeyguard( activity.getActivityToken(), new IKeyguardDismissCallback.Stub() { @Override public void onDismissError() throws RemoteException { Loading @@ -622,9 +621,6 @@ public class KeyguardManager { } } }, message); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** Loading packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java +4 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static android.app.ActivityTaskManager.getService; import android.annotation.NonNull; import android.app.Activity; import android.app.ActivityClient; import android.app.ActivityManager; import android.app.ActivityManager.RecentTaskInfo; import android.app.ActivityManager.RunningTaskInfo; Loading Loading @@ -140,8 +141,9 @@ public class ActivityManagerWrapper { */ public void invalidateHomeTaskSnapshot(final Activity homeActivity) { try { getService().invalidateHomeTaskSnapshot(homeActivity.getActivityToken()); } catch (RemoteException e) { ActivityClient.getInstance().invalidateHomeTaskSnapshot( homeActivity.getActivityToken()); } catch (Throwable e) { Log.w(TAG, "Failed to invalidate home snapshot", e); } } Loading Loading
core/java/android/app/ActivityClient.java +33 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import android.os.RemoteException; import android.util.Singleton; import android.view.RemoteAnimationDefinition; import com.android.internal.policy.IKeyguardDismissCallback; /** * Provides the activity associated operations that communicate with system. * Loading Loading @@ -431,6 +433,37 @@ public class ActivityClient { } } /** * Restart the process and activity to adopt the latest configuration for size compat mode. * This only takes effect for visible activity because invisible background activity can be * restarted naturally when it becomes visible. */ public void restartActivityProcessIfVisible(IBinder token) { try { getActivityClientController().restartActivityProcessIfVisible(token); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** Removes the snapshot of home task. */ public void invalidateHomeTaskSnapshot(IBinder homeToken) { try { getActivityClientController().invalidateHomeTaskSnapshot(homeToken); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } void dismissKeyguard(IBinder token, IKeyguardDismissCallback callback, CharSequence message) { try { getActivityClientController().dismissKeyguard(token, callback, message); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } void registerRemoteAnimations(IBinder token, RemoteAnimationDefinition definition) { try { getActivityClientController().registerRemoteAnimations(token, definition); Loading
core/java/android/app/IActivityClientController.aidl +23 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import android.os.Bundle; import android.os.PersistableBundle; import android.view.RemoteAnimationDefinition; import com.android.internal.policy.IKeyguardDismissCallback; /** * Interface for the callback and request from an activity to system. * Loading Loading @@ -95,6 +97,27 @@ interface IActivityClientController { /** See {@link android.app.Activity#setDisablePreviewScreenshots}. */ oneway void setDisablePreviewScreenshots(in IBinder token, boolean disable); /** * Restarts the activity by killing its process if it is visible. If the activity is not * visible, the activity will not be restarted immediately and just keep the activity record in * the stack. It also resets the current override configuration so the activity will use the * configuration according to the latest state. * * @param activityToken The token of the target activity to restart. */ void restartActivityProcessIfVisible(in IBinder activityToken); /** * It should only be called from home activity to remove its outdated snapshot. The home * snapshot is used to speed up entering home from screen off. If the content of home activity * is significantly different from before taking the snapshot, then the home activity can use * this method to avoid inconsistent transition. */ void invalidateHomeTaskSnapshot(IBinder homeToken); void dismissKeyguard(in IBinder token, in IKeyguardDismissCallback callback, in CharSequence message); /** Registers remote animations for a specific activity. */ void registerRemoteAnimations(in IBinder token, in RemoteAnimationDefinition definition); Loading
core/java/android/app/IActivityTaskManager.aidl +0 −24 Original line number Diff line number Diff line Loading @@ -72,7 +72,6 @@ import android.view.RemoteAnimationAdapter; import android.window.IWindowOrganizerController; import com.android.internal.app.IVoiceInteractor; import com.android.internal.os.IResultReceiver; import com.android.internal.policy.IKeyguardDismissCallback; import java.util.List; Loading @@ -85,8 +84,6 @@ import java.util.List; // TODO(b/174040395): Make this interface private to ActivityTaskManager.java and have external // caller go through that call instead. This would help us better separate and control the API // surface exposed. // TODO(b/174041144): Move callback methods from Activity (Things that take param 'IBinder token') // to a separate interface that is only available to the Activity. // TODO(b/174041603): Create a builder interface for things like startActivityXXX(...) to reduce // interface duplication. // TODO(b/174040691): Clean-up/remove all obsolete or unused interfaces like things that should be Loading Loading @@ -294,9 +291,6 @@ interface IActivityTaskManager { // Get device configuration ConfigurationInfo getDeviceConfigurationInfo(); void dismissKeyguard(in IBinder token, in IKeyguardDismissCallback callback, in CharSequence message); /** Cancels the window transitions for the given task. */ void cancelTaskWindowTransition(int taskId); Loading @@ -308,14 +302,6 @@ interface IActivityTaskManager { */ android.window.TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution); /** * It should only be called from home activity to remove its outdated snapshot. The home * snapshot is used to speed up entering home from screen off. If the content of home activity * is significantly different from before taking the snapshot, then the home activity can use * this method to avoid inconsistent transition. */ void invalidateHomeTaskSnapshot(IBinder homeToken); /** * Return the user id of last resumed activity. */ Loading Loading @@ -362,14 +348,4 @@ interface IActivityTaskManager { * Clears launch params for given packages. */ void clearLaunchParamsForPackages(in List<String> packageNames); /** * Restarts the activity by killing its process if it is visible. If the activity is not * visible, the activity will not be restarted immediately and just keep the activity record in * the stack. It also resets the current override configuration so the activity will use the * configuration according to the latest state. * * @param activityToken The token of the target activity to restart. */ void restartActivityProcessIfVisible(in IBinder activityToken); }
core/java/android/app/KeyguardManager.java +18 −22 Original line number Diff line number Diff line Loading @@ -598,8 +598,7 @@ public class KeyguardManager { @SystemApi public void requestDismissKeyguard(@NonNull Activity activity, @Nullable CharSequence message, @Nullable KeyguardDismissCallback callback) { try { ActivityTaskManager.getService().dismissKeyguard( ActivityClient.getInstance().dismissKeyguard( activity.getActivityToken(), new IKeyguardDismissCallback.Stub() { @Override public void onDismissError() throws RemoteException { Loading @@ -622,9 +621,6 @@ public class KeyguardManager { } } }, message); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** Loading
packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java +4 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static android.app.ActivityTaskManager.getService; import android.annotation.NonNull; import android.app.Activity; import android.app.ActivityClient; import android.app.ActivityManager; import android.app.ActivityManager.RecentTaskInfo; import android.app.ActivityManager.RunningTaskInfo; Loading Loading @@ -140,8 +141,9 @@ public class ActivityManagerWrapper { */ public void invalidateHomeTaskSnapshot(final Activity homeActivity) { try { getService().invalidateHomeTaskSnapshot(homeActivity.getActivityToken()); } catch (RemoteException e) { ActivityClient.getInstance().invalidateHomeTaskSnapshot( homeActivity.getActivityToken()); } catch (Throwable e) { Log.w(TAG, "Failed to invalidate home snapshot", e); } } Loading