diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2020-12-30 00:05:37 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-12-30 00:05:37 +0000 |
commit | f54200d83880c1cc4d501e4cb5b4313eb7fc0b9a (patch) | |
tree | f9d8e55c4b7d0f19d6705a4e5d1fdd32182365c5 | |
parent | 4eb66e8bac1a780c5131d478f9edf0617c4cd487 (diff) | |
parent | 8af1a757149692634a7b82b1fce018761b3bcc9b (diff) | |
download | platform_packages_apps_DocumentsUI-f54200d83880c1cc4d501e4cb5b4313eb7fc0b9a.tar.gz platform_packages_apps_DocumentsUI-f54200d83880c1cc4d501e4cb5b4313eb7fc0b9a.tar.bz2 platform_packages_apps_DocumentsUI-f54200d83880c1cc4d501e4cb5b4313eb7fc0b9a.zip |
Snap for 7055775 from 8af1a757149692634a7b82b1fce018761b3bcc9b to rvc-qpr2-releaseandroid-11.0.0_r37android-11.0.0_r36android-11.0.0_r35android-11.0.0_r34android-11.0.0_r33android-11.0.0_r32android11-qpr2-release
Change-Id: I381b121006900379dc3b18919155c63c9821477b
-rw-r--r-- | src/com/android/documentsui/DirectoryLoader.java | 23 | ||||
-rw-r--r-- | src/com/android/documentsui/MultiRootDocumentsLoader.java | 23 |
2 files changed, 42 insertions, 4 deletions
diff --git a/src/com/android/documentsui/DirectoryLoader.java b/src/com/android/documentsui/DirectoryLoader.java index 458f86112..31963962a 100644 --- a/src/com/android/documentsui/DirectoryLoader.java +++ b/src/com/android/documentsui/DirectoryLoader.java @@ -281,10 +281,11 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { @Override protected void onStartLoading() { - if (mResult != null) { + boolean isCursorStale = checkIfCursorStale(mResult); + if (mResult != null && !isCursorStale) { deliverResult(mResult); } - if (takeContentChanged() || mResult == null) { + if (takeContentChanged() || mResult == null || isCursorStale) { forceLoad(); } } @@ -313,4 +314,22 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { FileUtils.closeQuietly(mResult); mResult = null; } + + private boolean checkIfCursorStale(DirectoryResult result) { + if (result == null || result.cursor == null || result.cursor.isClosed()) { + return true; + } + Cursor cursor = result.cursor; + try { + cursor.moveToPosition(-1); + for (int pos = 0; pos < cursor.getCount(); ++pos) { + if (!cursor.moveToNext()) { + return true; + } + } + } catch (Exception e) { + return true; + } + return false; + } } diff --git a/src/com/android/documentsui/MultiRootDocumentsLoader.java b/src/com/android/documentsui/MultiRootDocumentsLoader.java index 643f122ff..e7d09bfd3 100644 --- a/src/com/android/documentsui/MultiRootDocumentsLoader.java +++ b/src/com/android/documentsui/MultiRootDocumentsLoader.java @@ -303,10 +303,11 @@ public abstract class MultiRootDocumentsLoader extends AsyncTaskLoader<Directory @Override protected void onStartLoading() { - if (mResult != null) { + boolean isCursorStale = checkIfCursorStale(mResult); + if (mResult != null && !isCursorStale) { deliverResult(mResult); } - if (takeContentChanged() || mResult == null) { + if (takeContentChanged() || mResult == null || isCursorStale) { forceLoad(); } } @@ -456,4 +457,22 @@ public abstract class MultiRootDocumentsLoader extends AsyncTaskLoader<Directory mIsClosed = true; } } + + private boolean checkIfCursorStale(DirectoryResult result) { + if (result == null || result.cursor == null || result.cursor.isClosed()) { + return true; + } + Cursor cursor = result.cursor; + try { + cursor.moveToPosition(-1); + for (int pos = 0; pos < cursor.getCount(); ++pos) { + if (!cursor.moveToNext()) { + return true; + } + } + } catch (Exception e) { + return true; + } + return false; + } } |