diff options
author | Stephen Bird <sbird@cyngn.com> | 2015-08-24 16:19:05 -0700 |
---|---|---|
committer | Stephen Bird <sbird@cyngn.com> | 2015-08-26 14:22:58 -0700 |
commit | 1a23b92dc1d3a1a2f9b386139c40281d9c24fc26 (patch) | |
tree | f49ea1709d1e93cb765730102fd76744e7e7b5c6 | |
parent | 450f3d55f9428817d5a2dd41aa9717d620ddf955 (diff) | |
download | android_packages_apps_CMFileManager-1a23b92dc1d3a1a2f9b386139c40281d9c24fc26.tar.gz android_packages_apps_CMFileManager-1a23b92dc1d3a1a2f9b386139c40281d9c24fc26.tar.bz2 android_packages_apps_CMFileManager-1a23b92dc1d3a1a2f9b386139c40281d9c24fc26.zip |
Search: Fix race condition with results display
Since results are now run through an asynctask before they are added
this created a race condition which lead to the screen sometimes
showing 'no results found' when results are actually available
Ticket: QRDL-995
Change-Id: I5b7ddb44c16603fac7ceca3f955038cc3d646de8
-rwxr-xr-x | src/com/cyanogenmod/filemanager/activities/SearchActivity.java | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/src/com/cyanogenmod/filemanager/activities/SearchActivity.java b/src/com/cyanogenmod/filemanager/activities/SearchActivity.java index e87c63c1..1ced5f98 100755 --- a/src/com/cyanogenmod/filemanager/activities/SearchActivity.java +++ b/src/com/cyanogenmod/filemanager/activities/SearchActivity.java @@ -249,14 +249,10 @@ public class SearchActivity extends Activity try { mExecutable = null; mAdapter.stopStreaming(); - int resultsSize = mAdapter.resultsSize(); mStreamingSearchProgress.setVisibility(View.INVISIBLE); if (mMimeTypeCategories != null && mMimeTypeCategories.size() > 1) { mMimeTypeSpinner.setVisibility(View.VISIBLE); } - mSearchListView.setVisibility(resultsSize > 0 ? View.VISIBLE : View.GONE); - mEmptyListMsg.setVisibility(resultsSize > 0 ? View.GONE : View.VISIBLE); - } catch (Throwable ex) { Log.e(TAG, "onAsyncEnd method fails", ex); //$NON-NLS-1$ } @@ -271,7 +267,6 @@ public class SearchActivity extends Activity @SuppressWarnings("unchecked") public void onConcurrentPartialResult(final Object partialResults) { //Saved in the global result list, for save at the end - FileSystemObject result = null; if (partialResults instanceof FileSystemObject) { FileSystemObject fso = (FileSystemObject) partialResults; if (mMimeTypeCategories == null || mMimeTypeCategories.contains(MimeTypeHelper @@ -289,24 +284,6 @@ public class SearchActivity extends Activity } } } - - //Notify progress - mSearchListView.post(new Runnable() { - @Override - public void run() { - int progress = mAdapter.resultsSize(); - String foundItems = - getResources(). - getQuantityString( - R.plurals.search_found_items, progress, - Integer.valueOf(progress) ); - mSearchFoundItems.setText( - getString( - R.string.search_found_items_in_directory, - foundItems, - mSearchDirectory)); - } - }); } /** @@ -837,7 +814,7 @@ public class SearchActivity extends Activity DialogHelper.showToast( SearchActivity.this, R.string.search_error_msg, Toast.LENGTH_SHORT); - SearchActivity.this.mSearchListView.setVisibility(View.GONE); + toggleResults(false, true); } } }); @@ -880,14 +857,21 @@ public class SearchActivity extends Activity } @Override - protected void onPostExecute(Boolean sucess) { + protected void onPostExecute(Boolean success) { SearchActivity activity = mActivity.get(); if (activity == null) { return; } - if (sucess) { + if (success) { // add to adapter activity.mAdapter.addNewItem(mHolder); + int progress = activity.mAdapter.resultsSize(); + activity.toggleResults(progress > 0, false); + String foundItems = activity.getResources().getQuantityString( + R.plurals.search_found_items, progress, progress); + activity.mSearchFoundItems.setText(activity.getString( + R.string.search_found_items_in_directory, + foundItems, activity.mSearchDirectory)); } } } |