diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-05-13 00:57:28 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-05-13 00:57:28 +0000 |
| commit | 58c274fdcbf19d995b56ff151afee2c56df686c9 (patch) | |
| tree | 9761886c6e719c608e7cfcc742a1ad69e7d10597 /core/java | |
| parent | 8e65e076313e907934d0e64a702ef121dd5e4007 (diff) | |
| parent | 0debe440bd8d91add4c7963825a5fe6f866217dc (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.java | 41 |
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) { |
