Merge "Sharesheet - run APS sortTargets in newSingleThreadExecutor" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d9a22cb829
@@ -26,7 +26,6 @@ import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Log;
|
||||
@@ -37,6 +36,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
/**
|
||||
* Uses an {@link AppPredictor} to sort Resolver targets. If the AppPredictionService appears to be
|
||||
@@ -46,7 +46,7 @@ import java.util.Map;
|
||||
class AppPredictionServiceResolverComparator extends AbstractResolverComparator {
|
||||
|
||||
private static final String TAG = "APSResolverComparator";
|
||||
private static final long DELAY_COMPUTE_WHEN_DEFAULTING_TO_RESOLVER_MILLIS = 200;
|
||||
private static final boolean DEBUG = false;
|
||||
|
||||
private final AppPredictor mAppPredictor;
|
||||
private final Context mContext;
|
||||
@@ -103,23 +103,22 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator
|
||||
.setTarget(target.name.getPackageName(), mUser)
|
||||
.setClassName(target.name.getClassName()).build());
|
||||
}
|
||||
mAppPredictor.sortTargets(appTargets, mContext.getMainExecutor(),
|
||||
mAppPredictor.sortTargets(appTargets, Executors.newSingleThreadExecutor(),
|
||||
sortedAppTargets -> {
|
||||
if (sortedAppTargets.isEmpty()) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "AppPredictionService disabled. Using resolver.");
|
||||
}
|
||||
// APS for chooser is disabled. Fallback to resolver.
|
||||
mResolverRankerService =
|
||||
new ResolverRankerServiceResolverComparator(
|
||||
mContext, mIntent, mReferrerPackage,
|
||||
() -> mHandler.sendEmptyMessage(RANKER_SERVICE_RESULT));
|
||||
mResolverRankerService.initRanker(mContext);
|
||||
Handler computeHandler =
|
||||
new Handler(msg -> {
|
||||
mResolverRankerService.compute(targets);
|
||||
return true;
|
||||
});
|
||||
computeHandler.sendEmptyMessageDelayed(
|
||||
0, DELAY_COMPUTE_WHEN_DEFAULTING_TO_RESOLVER_MILLIS);
|
||||
mResolverRankerService.compute(targets);
|
||||
} else {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "AppPredictionService response received");
|
||||
}
|
||||
Message msg =
|
||||
Message.obtain(mHandler, RANKER_SERVICE_RESULT, sortedAppTargets);
|
||||
msg.sendToTarget();
|
||||
|
||||
@@ -315,7 +315,7 @@ class ResolverRankerServiceResolverComparator extends AbstractResolverComparator
|
||||
}
|
||||
|
||||
// connect to a ranking service.
|
||||
void initRanker(Context context) {
|
||||
private void initRanker(Context context) {
|
||||
synchronized (mLock) {
|
||||
if (mConnection != null && mRanker != null) {
|
||||
if (DEBUG) {
|
||||
|
||||
Reference in New Issue
Block a user