Loading core/java/com/android/internal/app/ResolverListController.java +25 −50 Original line number Diff line number Diff line Loading @@ -56,9 +56,6 @@ public class ResolverListController { private static final String TAG = "ResolverListController"; private static final boolean DEBUG = false; Object mLock = new Object(); @GuardedBy("mLock") private ResolverComparator mResolverComparator; private boolean isComputed = false; Loading @@ -73,11 +70,9 @@ public class ResolverListController { mLaunchedFromUid = launchedFromUid; mTargetIntent = targetIntent; mReferrerPackage = referrerPackage; synchronized (mLock) { mResolverComparator = new ResolverComparator(mContext, mTargetIntent, mReferrerPackage, null); } } @VisibleForTesting public ResolveInfo getLastChosen() throws RemoteException { Loading Loading @@ -244,17 +239,16 @@ public class ResolverListController { @VisibleForTesting @WorkerThread public void sort(List<ResolverActivity.ResolvedComponentInfo> inputList) { synchronized (mLock) { if (mResolverComparator == null) { Log.d(TAG, "Comparator has already been destroyed; skipped."); return; } final CountDownLatch finishComputeSignal = new CountDownLatch(1); ComputeCallback callback = new ComputeCallback(finishComputeSignal); mResolverComparator.setCallBack(callback); try { long beforeRank = System.currentTimeMillis(); if (!isComputed) { final CountDownLatch finishComputeSignal = new CountDownLatch(1); ComputeCallback callback = new ComputeCallback(finishComputeSignal); mResolverComparator.setCallBack(callback); mResolverComparator.compute(inputList); finishComputeSignal.await(); isComputed = true; Loading @@ -268,7 +262,6 @@ public class ResolverListController { Log.e(TAG, "Compute & Sort was interrupted: " + e); } } } private static boolean isSameResolvedComponent(ResolveInfo a, ResolverActivity.ResolvedComponentInfo b) { Loading @@ -287,36 +280,18 @@ public class ResolverListController { @VisibleForTesting public float getScore(ResolverActivity.DisplayResolveInfo target) { synchronized (mLock) { if (mResolverComparator == null) { return 0.0f; } return mResolverComparator.getScore(target.getResolvedComponentName()); } } public void updateModel(ComponentName componentName) { synchronized (mLock) { if (mResolverComparator != null) { mResolverComparator.updateModel(componentName); } } } public void updateChooserCounts(String packageName, int userId, String action) { synchronized (mLock) { if (mResolverComparator != null) { mResolverComparator.updateChooserCounts(packageName, userId, action); } } } public void destroy() { synchronized (mLock) { if (mResolverComparator != null) { mResolverComparator.destroy(); } mResolverComparator = null; } } } Loading
core/java/com/android/internal/app/ResolverListController.java +25 −50 Original line number Diff line number Diff line Loading @@ -56,9 +56,6 @@ public class ResolverListController { private static final String TAG = "ResolverListController"; private static final boolean DEBUG = false; Object mLock = new Object(); @GuardedBy("mLock") private ResolverComparator mResolverComparator; private boolean isComputed = false; Loading @@ -73,11 +70,9 @@ public class ResolverListController { mLaunchedFromUid = launchedFromUid; mTargetIntent = targetIntent; mReferrerPackage = referrerPackage; synchronized (mLock) { mResolverComparator = new ResolverComparator(mContext, mTargetIntent, mReferrerPackage, null); } } @VisibleForTesting public ResolveInfo getLastChosen() throws RemoteException { Loading Loading @@ -244,17 +239,16 @@ public class ResolverListController { @VisibleForTesting @WorkerThread public void sort(List<ResolverActivity.ResolvedComponentInfo> inputList) { synchronized (mLock) { if (mResolverComparator == null) { Log.d(TAG, "Comparator has already been destroyed; skipped."); return; } final CountDownLatch finishComputeSignal = new CountDownLatch(1); ComputeCallback callback = new ComputeCallback(finishComputeSignal); mResolverComparator.setCallBack(callback); try { long beforeRank = System.currentTimeMillis(); if (!isComputed) { final CountDownLatch finishComputeSignal = new CountDownLatch(1); ComputeCallback callback = new ComputeCallback(finishComputeSignal); mResolverComparator.setCallBack(callback); mResolverComparator.compute(inputList); finishComputeSignal.await(); isComputed = true; Loading @@ -268,7 +262,6 @@ public class ResolverListController { Log.e(TAG, "Compute & Sort was interrupted: " + e); } } } private static boolean isSameResolvedComponent(ResolveInfo a, ResolverActivity.ResolvedComponentInfo b) { Loading @@ -287,36 +280,18 @@ public class ResolverListController { @VisibleForTesting public float getScore(ResolverActivity.DisplayResolveInfo target) { synchronized (mLock) { if (mResolverComparator == null) { return 0.0f; } return mResolverComparator.getScore(target.getResolvedComponentName()); } } public void updateModel(ComponentName componentName) { synchronized (mLock) { if (mResolverComparator != null) { mResolverComparator.updateModel(componentName); } } } public void updateChooserCounts(String packageName, int userId, String action) { synchronized (mLock) { if (mResolverComparator != null) { mResolverComparator.updateChooserCounts(packageName, userId, action); } } } public void destroy() { synchronized (mLock) { if (mResolverComparator != null) { mResolverComparator.destroy(); } mResolverComparator = null; } } }