Loading services/core/java/com/android/server/wm/ActivityRecord.java +2 −2 Original line number Diff line number Diff line Loading @@ -4916,7 +4916,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A final ActivityLifecycleItem lifecycleItem = getLifecycleItemForCurrentStateForResult(); try { if (lifecycleItem != null) { mAtmService.getLifecycleManager().scheduleTransactionAndLifecycleItems( mAtmService.getLifecycleManager().scheduleTransactionItems( app.getThread(), activityResultItem, lifecycleItem); } else { Slog.w(TAG, "Unable to get the lifecycle item for state " + mState Loading Loading @@ -9629,7 +9629,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } else { lifecycleItem = new PauseActivityItem(token); } mAtmService.getLifecycleManager().scheduleTransactionAndLifecycleItems( mAtmService.getLifecycleManager().scheduleTransactionItems( app.getThread(), callbackItem, lifecycleItem); startRelaunching(); // Note: don't need to call pauseIfSleepingLocked() here, because the caller will only Loading services/core/java/com/android/server/wm/ActivityRefresher.java +1 −1 Original line number Diff line number Diff line Loading @@ -89,7 +89,7 @@ class ActivityRefresher { final ResumeActivityItem resumeActivityItem = new ResumeActivityItem( activity.token, /* isForward */ false, /* shouldSendCompatFakeFocus */ false); try { activity.mAtmService.getLifecycleManager().scheduleTransactionAndLifecycleItems( activity.mAtmService.getLifecycleManager().scheduleTransactionItems( activity.app.getThread(), refreshCallbackItem, resumeActivityItem); mHandler.postDelayed(() -> { synchronized (mWmService.mGlobalLock) { Loading services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +4 −3 Original line number Diff line number Diff line Loading @@ -964,11 +964,12 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { // transaction. mService.getLifecycleManager().dispatchPendingTransaction(proc.getThread()); } mService.getLifecycleManager().scheduleTransactionAndLifecycleItems( proc.getThread(), launchActivityItem, lifecycleItem, mService.getLifecycleManager().scheduleTransactionItems( proc.getThread(), // Immediately dispatch the transaction, so that if it fails, the server can // restart the process and retry now. true /* shouldDispatchImmediately */); true /* shouldDispatchImmediately */, launchActivityItem, lifecycleItem); if (procConfig.seq > mRootWindowContainer.getConfiguration().seq) { // If the seq is increased, there should be something changed (e.g. registered Loading services/core/java/com/android/server/wm/ClientLifecycleManager.java +23 −19 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.server.wm; import android.annotation.NonNull; import android.app.IApplicationThread; import android.app.compat.CompatChanges; import android.app.servertransaction.ActivityLifecycleItem; import android.app.servertransaction.ClientTransaction; import android.app.servertransaction.ClientTransactionItem; import android.app.servertransaction.LaunchActivityItem; Loading Loading @@ -97,31 +96,34 @@ class ClientLifecycleManager { } /** * Schedules a single transaction item, either a callback or a lifecycle request, delivery to * client application. * Schedules a transaction with the given item, delivery to client application. * * @throws RemoteException * @see ClientTransactionItem */ void scheduleTransactionItem(@NonNull IApplicationThread client, @NonNull ClientTransactionItem transactionItem) throws RemoteException { @NonNull ClientTransactionItem item) throws RemoteException { // Wait until RootWindowContainer#performSurfacePlacementNoTrace to dispatch all pending // transactions at once. final ClientTransaction clientTransaction = getOrCreatePendingTransaction(client); clientTransaction.addTransactionItem(transactionItem); clientTransaction.addTransactionItem(item); onClientTransactionItemScheduled(clientTransaction, false /* shouldDispatchImmediately */); onClientTransactionItemScheduled(clientTransaction, false /* shouldDispatchImmediately */); } void scheduleTransactionAndLifecycleItems(@NonNull IApplicationThread client, @NonNull ClientTransactionItem transactionItem, @NonNull ActivityLifecycleItem lifecycleItem) throws RemoteException { scheduleTransactionAndLifecycleItems(client, transactionItem, lifecycleItem, false /* shouldDispatchImmediately */); /** * Schedules a transaction with the given items, delivery to client application. * * @throws RemoteException * @see ClientTransactionItem */ void scheduleTransactionItems(@NonNull IApplicationThread client, @NonNull ClientTransactionItem... items) throws RemoteException { scheduleTransactionItems(client, false /* shouldDispatchImmediately */, items); } /** * Schedules a single transaction item with a lifecycle request, delivery to client application. * Schedules a transaction with the given items, delivery to client application. * * @param shouldDispatchImmediately whether or not to dispatch the transaction immediately. This * should only be {@code true} when it is important to know the Loading @@ -133,15 +135,17 @@ class ClientLifecycleManager { * @throws RemoteException * @see ClientTransactionItem */ void scheduleTransactionAndLifecycleItems(@NonNull IApplicationThread client, @NonNull ClientTransactionItem transactionItem, @NonNull ActivityLifecycleItem lifecycleItem, boolean shouldDispatchImmediately) throws RemoteException { void scheduleTransactionItems(@NonNull IApplicationThread client, boolean shouldDispatchImmediately, @NonNull ClientTransactionItem... items) throws RemoteException { // Wait until RootWindowContainer#performSurfacePlacementNoTrace to dispatch all pending // transactions at once. final ClientTransaction clientTransaction = getOrCreatePendingTransaction(client); clientTransaction.addTransactionItem(transactionItem); clientTransaction.addTransactionItem(lifecycleItem); final int size = items.length; for (int i = 0; i < size; i++) { clientTransaction.addTransactionItem(items[i]); } onClientTransactionItemScheduled(clientTransaction, shouldDispatchImmediately); } Loading services/tests/wmtests/src/com/android/server/wm/ActivityRefresherTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -197,7 +197,7 @@ public class ActivityRefresherTests extends WindowTestsBase { /* isForward */ false, /* shouldSendCompatFakeFocus */ false); verify(mActivity.mAtmService.getLifecycleManager(), times(refreshRequested ? 1 : 0)) .scheduleTransactionAndLifecycleItems(mActivity.app.getThread(), .scheduleTransactionItems(mActivity.app.getThread(), refreshCallbackItem, resumeActivityItem); } Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +2 −2 Original line number Diff line number Diff line Loading @@ -4916,7 +4916,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A final ActivityLifecycleItem lifecycleItem = getLifecycleItemForCurrentStateForResult(); try { if (lifecycleItem != null) { mAtmService.getLifecycleManager().scheduleTransactionAndLifecycleItems( mAtmService.getLifecycleManager().scheduleTransactionItems( app.getThread(), activityResultItem, lifecycleItem); } else { Slog.w(TAG, "Unable to get the lifecycle item for state " + mState Loading Loading @@ -9629,7 +9629,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } else { lifecycleItem = new PauseActivityItem(token); } mAtmService.getLifecycleManager().scheduleTransactionAndLifecycleItems( mAtmService.getLifecycleManager().scheduleTransactionItems( app.getThread(), callbackItem, lifecycleItem); startRelaunching(); // Note: don't need to call pauseIfSleepingLocked() here, because the caller will only Loading
services/core/java/com/android/server/wm/ActivityRefresher.java +1 −1 Original line number Diff line number Diff line Loading @@ -89,7 +89,7 @@ class ActivityRefresher { final ResumeActivityItem resumeActivityItem = new ResumeActivityItem( activity.token, /* isForward */ false, /* shouldSendCompatFakeFocus */ false); try { activity.mAtmService.getLifecycleManager().scheduleTransactionAndLifecycleItems( activity.mAtmService.getLifecycleManager().scheduleTransactionItems( activity.app.getThread(), refreshCallbackItem, resumeActivityItem); mHandler.postDelayed(() -> { synchronized (mWmService.mGlobalLock) { Loading
services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +4 −3 Original line number Diff line number Diff line Loading @@ -964,11 +964,12 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { // transaction. mService.getLifecycleManager().dispatchPendingTransaction(proc.getThread()); } mService.getLifecycleManager().scheduleTransactionAndLifecycleItems( proc.getThread(), launchActivityItem, lifecycleItem, mService.getLifecycleManager().scheduleTransactionItems( proc.getThread(), // Immediately dispatch the transaction, so that if it fails, the server can // restart the process and retry now. true /* shouldDispatchImmediately */); true /* shouldDispatchImmediately */, launchActivityItem, lifecycleItem); if (procConfig.seq > mRootWindowContainer.getConfiguration().seq) { // If the seq is increased, there should be something changed (e.g. registered Loading
services/core/java/com/android/server/wm/ClientLifecycleManager.java +23 −19 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.server.wm; import android.annotation.NonNull; import android.app.IApplicationThread; import android.app.compat.CompatChanges; import android.app.servertransaction.ActivityLifecycleItem; import android.app.servertransaction.ClientTransaction; import android.app.servertransaction.ClientTransactionItem; import android.app.servertransaction.LaunchActivityItem; Loading Loading @@ -97,31 +96,34 @@ class ClientLifecycleManager { } /** * Schedules a single transaction item, either a callback or a lifecycle request, delivery to * client application. * Schedules a transaction with the given item, delivery to client application. * * @throws RemoteException * @see ClientTransactionItem */ void scheduleTransactionItem(@NonNull IApplicationThread client, @NonNull ClientTransactionItem transactionItem) throws RemoteException { @NonNull ClientTransactionItem item) throws RemoteException { // Wait until RootWindowContainer#performSurfacePlacementNoTrace to dispatch all pending // transactions at once. final ClientTransaction clientTransaction = getOrCreatePendingTransaction(client); clientTransaction.addTransactionItem(transactionItem); clientTransaction.addTransactionItem(item); onClientTransactionItemScheduled(clientTransaction, false /* shouldDispatchImmediately */); onClientTransactionItemScheduled(clientTransaction, false /* shouldDispatchImmediately */); } void scheduleTransactionAndLifecycleItems(@NonNull IApplicationThread client, @NonNull ClientTransactionItem transactionItem, @NonNull ActivityLifecycleItem lifecycleItem) throws RemoteException { scheduleTransactionAndLifecycleItems(client, transactionItem, lifecycleItem, false /* shouldDispatchImmediately */); /** * Schedules a transaction with the given items, delivery to client application. * * @throws RemoteException * @see ClientTransactionItem */ void scheduleTransactionItems(@NonNull IApplicationThread client, @NonNull ClientTransactionItem... items) throws RemoteException { scheduleTransactionItems(client, false /* shouldDispatchImmediately */, items); } /** * Schedules a single transaction item with a lifecycle request, delivery to client application. * Schedules a transaction with the given items, delivery to client application. * * @param shouldDispatchImmediately whether or not to dispatch the transaction immediately. This * should only be {@code true} when it is important to know the Loading @@ -133,15 +135,17 @@ class ClientLifecycleManager { * @throws RemoteException * @see ClientTransactionItem */ void scheduleTransactionAndLifecycleItems(@NonNull IApplicationThread client, @NonNull ClientTransactionItem transactionItem, @NonNull ActivityLifecycleItem lifecycleItem, boolean shouldDispatchImmediately) throws RemoteException { void scheduleTransactionItems(@NonNull IApplicationThread client, boolean shouldDispatchImmediately, @NonNull ClientTransactionItem... items) throws RemoteException { // Wait until RootWindowContainer#performSurfacePlacementNoTrace to dispatch all pending // transactions at once. final ClientTransaction clientTransaction = getOrCreatePendingTransaction(client); clientTransaction.addTransactionItem(transactionItem); clientTransaction.addTransactionItem(lifecycleItem); final int size = items.length; for (int i = 0; i < size; i++) { clientTransaction.addTransactionItem(items[i]); } onClientTransactionItemScheduled(clientTransaction, shouldDispatchImmediately); } Loading
services/tests/wmtests/src/com/android/server/wm/ActivityRefresherTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -197,7 +197,7 @@ public class ActivityRefresherTests extends WindowTestsBase { /* isForward */ false, /* shouldSendCompatFakeFocus */ false); verify(mActivity.mAtmService.getLifecycleManager(), times(refreshRequested ? 1 : 0)) .scheduleTransactionAndLifecycleItems(mActivity.app.getThread(), .scheduleTransactionItems(mActivity.app.getThread(), refreshCallbackItem, resumeActivityItem); } Loading