diff options
| -rw-r--r-- | core/java/com/android/internal/app/ChooserActivity.java | 28 | ||||
| -rw-r--r-- | core/java/com/android/internal/app/ResolverActivity.java | 47 |
2 files changed, 52 insertions, 23 deletions
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index cae1f3831b4a..00c1e2977c03 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -2576,6 +2576,34 @@ public class ChooserActivity extends ResolverActivity { } } + /** + * Rather than fully sorting the input list, this sorting task will put the top k elements + * in the head of input list and fill the tail with other elements in undetermined order. + */ + @Override + AsyncTask<List<ResolvedComponentInfo>, + Void, + List<ResolvedComponentInfo>> createSortingTask() { + return new AsyncTask<List<ResolvedComponentInfo>, + Void, + List<ResolvedComponentInfo>>() { + @Override + protected List<ResolvedComponentInfo> doInBackground( + List<ResolvedComponentInfo>... params) { + mResolverListController.topK(params[0], + getMaxRankedTargets()); + return params[0]; + } + + @Override + protected void onPostExecute(List<ResolvedComponentInfo> sortedComponents) { + processSortedList(sortedComponents); + bindProfileView(); + notifyDataSetChanged(); + } + }; + } + @Override public void onListRebuilt() { updateAlphabeticalList(); diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 407a85f1bb05..bc4ac92dbe76 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -1618,7 +1618,7 @@ public class ResolverActivity extends Activity { private final List<ResolveInfo> mBaseResolveList; protected ResolveInfo mLastChosen; private DisplayResolveInfo mOtherProfile; - private ResolverListController mResolverListController; + ResolverListController mResolverListController; private int mPlaceholderCount; private boolean mAllTargetsAreBrowsers = false; @@ -1779,27 +1779,7 @@ public class ResolverActivity extends Activity { --placeholderCount; } setPlaceholderCount(placeholderCount); - AsyncTask<List<ResolvedComponentInfo>, - Void, - List<ResolvedComponentInfo>> sortingTask = - new AsyncTask<List<ResolvedComponentInfo>, - Void, - List<ResolvedComponentInfo>>() { - @Override - protected List<ResolvedComponentInfo> doInBackground( - List<ResolvedComponentInfo>... params) { - mResolverListController.sort(params[0]); - return params[0]; - } - - @Override - protected void onPostExecute(List<ResolvedComponentInfo> sortedComponents) { - processSortedList(sortedComponents); - bindProfileView(); - notifyDataSetChanged(); - } - }; - sortingTask.execute(currentResolveList); + createSortingTask().execute(currentResolveList); postListReadyRunnable(); return false; } else { @@ -1812,8 +1792,29 @@ public class ResolverActivity extends Activity { } } + AsyncTask<List<ResolvedComponentInfo>, + Void, + List<ResolvedComponentInfo>> createSortingTask() { + return new AsyncTask<List<ResolvedComponentInfo>, + Void, + List<ResolvedComponentInfo>>() { + @Override + protected List<ResolvedComponentInfo> doInBackground( + List<ResolvedComponentInfo>... params) { + mResolverListController.sort(params[0]); + return params[0]; + } + + @Override + protected void onPostExecute(List<ResolvedComponentInfo> sortedComponents) { + processSortedList(sortedComponents); + bindProfileView(); + notifyDataSetChanged(); + } + }; + } - private void processSortedList(List<ResolvedComponentInfo> sortedComponents) { + void processSortedList(List<ResolvedComponentInfo> sortedComponents) { int N; if (sortedComponents != null && (N = sortedComponents.size()) != 0) { mAllTargetsAreBrowsers = mUseLayoutForBrowsables; |