summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2020-05-13 00:57:28 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-05-13 00:57:28 +0000
commit58c274fdcbf19d995b56ff151afee2c56df686c9 (patch)
tree9761886c6e719c608e7cfcc742a1ad69e7d10597 /core/java
parent8e65e076313e907934d0e64a702ef121dd5e4007 (diff)
parent0debe440bd8d91add4c7963825a5fe6f866217dc (diff)
Merge "When android:ui process receives callback result of AppPredictionService sortTargets, directly handles result instead of sending to Handler which takes extra time to dispatch messages." into rvc-dev
Diffstat (limited to 'core/java')
-rw-r--r--core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java41
1 files changed, 26 insertions, 15 deletions
diff --git a/core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java b/core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java
index 37a5a63265e8..0d16cc49ea3c 100644
--- a/core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java
+++ b/core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java
@@ -128,9 +128,8 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator
mResolverRankerService.compute(targets);
} else {
Log.i(TAG, "AppPredictionService response received");
- Message msg =
- Message.obtain(mHandler, RANKER_SERVICE_RESULT, sortedAppTargets);
- msg.sendToTarget();
+ // Skip sending to Handler which takes extra time to dispatch messages.
+ handleResult(sortedAppTargets);
}
}
);
@@ -141,23 +140,35 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator
// Null value is okay if we have defaulted to the ResolverRankerService.
if (msg.what == RANKER_SERVICE_RESULT && msg.obj != null) {
final List<AppTarget> sortedAppTargets = (List<AppTarget>) msg.obj;
- if (checkAppTargetRankValid(sortedAppTargets)) {
- sortedAppTargets.forEach(target -> mTargetScores.put(
- new ComponentName(target.getPackageName(), target.getClassName()),
- target.getRank()));
- }
- for (int i = 0; i < sortedAppTargets.size(); i++) {
- ComponentName componentName = new ComponentName(
- sortedAppTargets.get(i).getPackageName(),
- sortedAppTargets.get(i).getClassName());
- mTargetRanks.put(componentName, i);
- Log.i(TAG, "handleResultMessage, sortedAppTargets #" + i + ": " + componentName);
- }
+ handleSortedAppTargets(sortedAppTargets);
} else if (msg.obj == null && mResolverRankerService == null) {
Log.e(TAG, "Unexpected null result");
}
}
+ private void handleResult(List<AppTarget> sortedAppTargets) {
+ if (mHandler.hasMessages(RANKER_RESULT_TIMEOUT)) {
+ handleSortedAppTargets(sortedAppTargets);
+ mHandler.removeMessages(RANKER_RESULT_TIMEOUT);
+ afterCompute();
+ }
+ }
+
+ private void handleSortedAppTargets(List<AppTarget> sortedAppTargets) {
+ if (checkAppTargetRankValid(sortedAppTargets)) {
+ sortedAppTargets.forEach(target -> mTargetScores.put(
+ new ComponentName(target.getPackageName(), target.getClassName()),
+ target.getRank()));
+ }
+ for (int i = 0; i < sortedAppTargets.size(); i++) {
+ ComponentName componentName = new ComponentName(
+ sortedAppTargets.get(i).getPackageName(),
+ sortedAppTargets.get(i).getClassName());
+ mTargetRanks.put(componentName, i);
+ Log.i(TAG, "handleSortedAppTargets, sortedAppTargets #" + i + ": " + componentName);
+ }
+ }
+
private boolean checkAppTargetRankValid(List<AppTarget> sortedAppTargets) {
for (AppTarget target : sortedAppTargets) {
if (target.getRank() != 0) {