diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2022-06-01 04:11:34 +0000 |
|---|---|---|
| committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-06-01 04:11:34 +0000 |
| commit | 199d93fd543e4d89212ea138fe450f81e881c1fe (patch) | |
| tree | c47fecb701a4c740858d5ce4c75c3c295afc1615 /core/java/android/app/ActivityThread.java | |
| parent | 941264d57e710553e61129b1153d3aead3cf9458 (diff) | |
| parent | cf05c79ea0d64cf727c5fc0940019e772f3454a0 (diff) | |
Merge "Postpone the request direct actions before onStart" into tm-dev am: 0d84708056 am: cf05c79ea0
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18628126
Change-Id: Ibbfcc51b996298ce0880e4a95dbbb042aedeb75d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'core/java/android/app/ActivityThread.java')
| -rw-r--r-- | core/java/android/app/ActivityThread.java | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 11d42461b4da..badfbf72b9ef 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -298,6 +298,11 @@ public final class ActivityThread extends ClientTransactionHandler /** Use background GC policy and default JIT threshold. */ private static final int VM_PROCESS_STATE_JANK_IMPERCEPTIBLE = 1; + /** The delay time for retrying to request DirectActions. */ + private static final long REQUEST_DIRECT_ACTIONS_RETRY_TIME_MS = 200; + /** The max count for retrying to request DirectActions. */ + private static final int REQUEST_DIRECT_ACTIONS_RETRY_MAX_COUNT = 3; + /** * Denotes an invalid sequence number corresponding to a process state change. */ @@ -1864,7 +1869,8 @@ public final class ActivityThread extends ClientTransactionHandler cancellationCallback.sendResult(cancellationResult); } mH.sendMessage(PooledLambda.obtainMessage(ActivityThread::handleRequestDirectActions, - ActivityThread.this, activityToken, interactor, cancellationSignal, callback)); + ActivityThread.this, activityToken, interactor, cancellationSignal, callback, + REQUEST_DIRECT_ACTIONS_RETRY_MAX_COUNT)); } @Override @@ -3940,7 +3946,7 @@ public final class ActivityThread extends ClientTransactionHandler /** Fetches the user actions for the corresponding activity */ private void handleRequestDirectActions(@NonNull IBinder activityToken, @NonNull IVoiceInteractor interactor, @NonNull CancellationSignal cancellationSignal, - @NonNull RemoteCallback callback) { + @NonNull RemoteCallback callback, int retryCount) { final ActivityClientRecord r = mActivities.get(activityToken); if (r == null) { Log.w(TAG, "requestDirectActions(): no activity for " + activityToken); @@ -3948,7 +3954,20 @@ public final class ActivityThread extends ClientTransactionHandler return; } final int lifecycleState = r.getLifecycleState(); - if (lifecycleState < ON_START || lifecycleState >= ON_STOP) { + if (lifecycleState < ON_START) { + // TODO(b/234173463): requestDirectActions callback should indicate errors + if (retryCount > 0) { + mH.sendMessageDelayed( + PooledLambda.obtainMessage(ActivityThread::handleRequestDirectActions, + ActivityThread.this, activityToken, interactor, cancellationSignal, + callback, retryCount - 1), REQUEST_DIRECT_ACTIONS_RETRY_TIME_MS); + return; + } + Log.w(TAG, "requestDirectActions(" + r + "): wrong lifecycle: " + lifecycleState); + callback.sendResult(null); + return; + } + if (lifecycleState >= ON_STOP) { Log.w(TAG, "requestDirectActions(" + r + "): wrong lifecycle: " + lifecycleState); callback.sendResult(null); return; |
