Merge "Invalidate home task snapshot onWakeAndUnlock." into tm-dev
This commit is contained in:
@@ -454,7 +454,13 @@ public class ActivityClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Removes the snapshot of home task. */
|
/**
|
||||||
|
* Removes the outdated snapshot of the home task.
|
||||||
|
*
|
||||||
|
* @param homeToken The token of the home task, or null if you have the
|
||||||
|
* {@link android.Manifest.permission#MANAGE_ACTIVITY_TASKS} permission and
|
||||||
|
* want us to find the home task token for you.
|
||||||
|
*/
|
||||||
public void invalidateHomeTaskSnapshot(IBinder homeToken) {
|
public void invalidateHomeTaskSnapshot(IBinder homeToken) {
|
||||||
try {
|
try {
|
||||||
getActivityClientController().invalidateHomeTaskSnapshot(homeToken);
|
getActivityClientController().invalidateHomeTaskSnapshot(homeToken);
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import static android.app.ActivityManager.RECENT_IGNORE_UNAVAILABLE;
|
|||||||
import static android.app.ActivityTaskManager.getService;
|
import static android.app.ActivityTaskManager.getService;
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
|
import android.annotation.Nullable;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.ActivityClient;
|
import android.app.ActivityClient;
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
@@ -154,11 +155,15 @@ public class ActivityManagerWrapper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes the outdated snapshot of home task.
|
* Removes the outdated snapshot of home task.
|
||||||
|
*
|
||||||
|
* @param homeActivity The home task activity, or null if you have the
|
||||||
|
* {@link android.Manifest.permission#MANAGE_ACTIVITY_TASKS} permission and
|
||||||
|
* want us to find the home task for you.
|
||||||
*/
|
*/
|
||||||
public void invalidateHomeTaskSnapshot(final Activity homeActivity) {
|
public void invalidateHomeTaskSnapshot(@Nullable final Activity homeActivity) {
|
||||||
try {
|
try {
|
||||||
ActivityClient.getInstance().invalidateHomeTaskSnapshot(
|
ActivityClient.getInstance().invalidateHomeTaskSnapshot(
|
||||||
homeActivity.getActivityToken());
|
homeActivity == null ? null : homeActivity.getActivityToken());
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
Log.w(TAG, "Failed to invalidate home snapshot", e);
|
Log.w(TAG, "Failed to invalidate home snapshot", e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -119,6 +119,7 @@ import com.android.systemui.dump.DumpManager;
|
|||||||
import com.android.systemui.keyguard.dagger.KeyguardModule;
|
import com.android.systemui.keyguard.dagger.KeyguardModule;
|
||||||
import com.android.systemui.navigationbar.NavigationModeController;
|
import com.android.systemui.navigationbar.NavigationModeController;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
|
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||||
import com.android.systemui.shared.system.QuickStepContract;
|
import com.android.systemui.shared.system.QuickStepContract;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
||||||
@@ -2784,6 +2785,13 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
|
|||||||
public void onWakeAndUnlocking() {
|
public void onWakeAndUnlocking() {
|
||||||
Trace.beginSection("KeyguardViewMediator#onWakeAndUnlocking");
|
Trace.beginSection("KeyguardViewMediator#onWakeAndUnlocking");
|
||||||
mWakeAndUnlocking = true;
|
mWakeAndUnlocking = true;
|
||||||
|
|
||||||
|
// We're going to animate in the Launcher, so ask WM to clear the task snapshot so we don't
|
||||||
|
// initially display an old snapshot with all of the icons visible. We're System UI, so
|
||||||
|
// we're allowed to pass in null to ask WM to find the home activity for us to prevent
|
||||||
|
// needing to IPC to Launcher.
|
||||||
|
ActivityManagerWrapper.getInstance().invalidateHomeTaskSnapshot(null /* homeActivity */);
|
||||||
|
|
||||||
keyguardDone();
|
keyguardDone();
|
||||||
Trace.endSection();
|
Trace.endSection();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1190,10 +1190,29 @@ class ActivityClientController extends IActivityClientController.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the outdated home task snapshot.
|
||||||
|
*
|
||||||
|
* @param token The token of the home task, or null if you have the
|
||||||
|
* {@link android.Manifest.permission#MANAGE_ACTIVITY_TASKS}
|
||||||
|
* permission and want us to find the home task token for you.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void invalidateHomeTaskSnapshot(IBinder token) {
|
public void invalidateHomeTaskSnapshot(IBinder token) {
|
||||||
|
if (token == null) {
|
||||||
|
ActivityTaskManagerService.enforceTaskPermission("invalidateHomeTaskSnapshot");
|
||||||
|
}
|
||||||
|
|
||||||
synchronized (mGlobalLock) {
|
synchronized (mGlobalLock) {
|
||||||
final ActivityRecord r = ActivityRecord.isInRootTaskLocked(token);
|
final ActivityRecord r;
|
||||||
|
if (token == null) {
|
||||||
|
final Task rootTask =
|
||||||
|
mService.mRootWindowContainer.getDefaultTaskDisplayArea().getRootHomeTask();
|
||||||
|
r = rootTask != null ? rootTask.topRunningActivity() : null;
|
||||||
|
} else {
|
||||||
|
r = ActivityRecord.isInRootTaskLocked(token);
|
||||||
|
}
|
||||||
|
|
||||||
if (r != null && r.isActivityTypeHome()) {
|
if (r != null && r.isActivityTypeHome()) {
|
||||||
mService.mWindowManager.mTaskSnapshotController.removeSnapshotCache(
|
mService.mWindowManager.mTaskSnapshotController.removeSnapshotCache(
|
||||||
r.getTask().mTaskId);
|
r.getTask().mTaskId);
|
||||||
|
|||||||
Reference in New Issue
Block a user