diff options
author | Jin Cao <jinyan@google.com> | 2014-10-06 11:40:16 -0700 |
---|---|---|
committer | Jin Cao <jinyan@google.com> | 2014-10-06 13:57:50 -0700 |
commit | 39e56eabea3938935fb0e9b8f087d6ba950ddf9d (patch) | |
tree | b51a706e22d3d4f89b117cf00201afd513677c95 /src | |
parent | 8dc449cf36bb9c93b0b10f91f58be67dc950fe6b (diff) | |
download | android_packages_apps_UnifiedEmail-39e56eabea3938935fb0e9b8f087d6ba950ddf9d.tar.gz android_packages_apps_UnifiedEmail-39e56eabea3938935fb0e9b8f087d6ba950ddf9d.tar.bz2 android_packages_apps_UnifiedEmail-39e56eabea3938935fb0e9b8f087d6ba950ddf9d.zip |
Don't assume that we'll close our db after saveRecentQuery
Also check for the case where we try to create a mergecursor
with empty array.
b/17879155
Change-Id: I0e5339248ba04d1ed6fc1734ab11e129a06e2290
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/mail/providers/SuggestionsProvider.java | 7 | ||||
-rw-r--r-- | src/com/android/mail/ui/MaterialSearchViewController.java | 15 |
2 files changed, 14 insertions, 8 deletions
diff --git a/src/com/android/mail/providers/SuggestionsProvider.java b/src/com/android/mail/providers/SuggestionsProvider.java index 519082200..4492daa7a 100644 --- a/src/com/android/mail/providers/SuggestionsProvider.java +++ b/src/com/android/mail/providers/SuggestionsProvider.java @@ -64,7 +64,7 @@ public class SuggestionsProvider extends SearchRecentSuggestionsProvider { @Override public Cursor query(String query) { - MergeCursor mergeCursor = null; + Cursor mergeCursor = null; synchronized (mTermsLock) { mFullQueryTerms = null; @@ -101,7 +101,10 @@ public class SuggestionsProvider extends SearchRecentSuggestionsProvider { if (query.length() >= MIN_QUERY_LENGTH_FOR_CONTACTS) { cursors.add(new ContactsCursor().query(query)); } - mergeCursor = new MergeCursor(cursors.toArray(new Cursor[cursors.size()])); + + if (cursors.size() > 0) { + mergeCursor = new MergeCursor(cursors.toArray(new Cursor[cursors.size()])); + } } return mergeCursor; } diff --git a/src/com/android/mail/ui/MaterialSearchViewController.java b/src/com/android/mail/ui/MaterialSearchViewController.java index 0dd6a7aff..ca54d242e 100644 --- a/src/com/android/mail/ui/MaterialSearchViewController.java +++ b/src/com/android/mail/ui/MaterialSearchViewController.java @@ -62,7 +62,8 @@ public class MaterialSearchViewController implements ViewMode.ModeChangeListener private int mControllerState; private int mEndXCoordForTabletLandscape; - private boolean mWaitToDestroyProvider; + private boolean mSavePending; + private boolean mDestroyProvider; public MaterialSearchViewController(MailActivity activity, ActivityController controller, Intent intent, Bundle savedInstanceState) { @@ -93,7 +94,8 @@ public class MaterialSearchViewController implements ViewMode.ModeChangeListener * This controller should not be used after this is called. */ public void onDestroy() { - if (!mWaitToDestroyProvider) { + mDestroyProvider = mSavePending; + if (!mSavePending) { mSuggestionsProvider.cleanup(); } mActivity.getViewMode().removeListener(this); @@ -232,11 +234,11 @@ public class MaterialSearchViewController implements ViewMode.ModeChangeListener } // static asynctask to save the query in the background. - class SaveRecentQueryTask extends AsyncTask<String, Void, Void> { + private class SaveRecentQueryTask extends AsyncTask<String, Void, Void> { @Override protected void onPreExecute() { - mWaitToDestroyProvider = true; + mSavePending = true; } @Override @@ -247,10 +249,11 @@ public class MaterialSearchViewController implements ViewMode.ModeChangeListener @Override protected void onPostExecute(Void aVoid) { - if (mWaitToDestroyProvider) { + if (mDestroyProvider) { mSuggestionsProvider.cleanup(); - mWaitToDestroyProvider = false; + mDestroyProvider = false; } + mSavePending = false; } } } |