Remove cache, and manually control archives lifecycle.
This will reduce memory consumption, copying flakyness and
simplify code.
Test: Unit tests.
Bug: 35303895, 35151292
Change-Id: I7124cf3c3ec897887171dffb80eddfe99a6a7c41
diff --git a/src/com/android/documentsui/DirectoryLoader.java b/src/com/android/documentsui/DirectoryLoader.java
index c0f69fc..8720701 100644
--- a/src/com/android/documentsui/DirectoryLoader.java
+++ b/src/com/android/documentsui/DirectoryLoader.java
@@ -30,6 +30,7 @@
import android.provider.DocumentsContract.Document;
import android.util.Log;
+import com.android.documentsui.archives.ArchivesProvider;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.FilteringCursorWrapper;
import com.android.documentsui.base.RootInfo;
@@ -92,6 +93,10 @@
Cursor cursor;
try {
client = DocumentsApplication.acquireUnstableProviderOrThrow(resolver, authority);
+ if (mDoc.isInArchive()) {
+ ArchivesProvider.acquireArchive(client, mUri);
+ }
+ result.client = client;
cursor = client.query(
mUri, null, null, null, mModel.getDocumentSortQuery(), mSignal);
if (cursor == null) {
@@ -108,8 +113,6 @@
}
cursor = mModel.sortCursor(cursor);
-
- result.client = client;
result.cursor = cursor;
} catch (Exception e) {
Log.w(TAG, "Failed to query", e);
@@ -118,6 +121,7 @@
synchronized (this) {
mSignal = null;
}
+ // TODO: Remove this call.
ContentProviderClient.releaseQuietly(client);
}