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
This commit is contained in:
committed by
Android (Google) Code Review
commit
58c274fdcb
@@ -128,9 +128,8 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator
|
|||||||
mResolverRankerService.compute(targets);
|
mResolverRankerService.compute(targets);
|
||||||
} else {
|
} else {
|
||||||
Log.i(TAG, "AppPredictionService response received");
|
Log.i(TAG, "AppPredictionService response received");
|
||||||
Message msg =
|
// Skip sending to Handler which takes extra time to dispatch messages.
|
||||||
Message.obtain(mHandler, RANKER_SERVICE_RESULT, sortedAppTargets);
|
handleResult(sortedAppTargets);
|
||||||
msg.sendToTarget();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -141,23 +140,35 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator
|
|||||||
// Null value is okay if we have defaulted to the ResolverRankerService.
|
// Null value is okay if we have defaulted to the ResolverRankerService.
|
||||||
if (msg.what == RANKER_SERVICE_RESULT && msg.obj != null) {
|
if (msg.what == RANKER_SERVICE_RESULT && msg.obj != null) {
|
||||||
final List<AppTarget> sortedAppTargets = (List<AppTarget>) msg.obj;
|
final List<AppTarget> sortedAppTargets = (List<AppTarget>) msg.obj;
|
||||||
if (checkAppTargetRankValid(sortedAppTargets)) {
|
handleSortedAppTargets(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);
|
|
||||||
}
|
|
||||||
} else if (msg.obj == null && mResolverRankerService == null) {
|
} else if (msg.obj == null && mResolverRankerService == null) {
|
||||||
Log.e(TAG, "Unexpected null result");
|
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) {
|
private boolean checkAppTargetRankValid(List<AppTarget> sortedAppTargets) {
|
||||||
for (AppTarget target : sortedAppTargets) {
|
for (AppTarget target : sortedAppTargets) {
|
||||||
if (target.getRank() != 0) {
|
if (target.getRank() != 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user