summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ivan Chiang <chiangi@google.com> 2019-05-07 02:31:07 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-05-07 02:31:07 +0000
commite66ca09dfed3130f4d0e09ed9f88f39d0788fec4 (patch)
tree8f6176162a1732e0bb575a861ba2fe32b4188594
parenta7e0e5d82a49ff70253e494a6b4576640fc21380 (diff)
parentdd4e7318e606f0af3b2091ddb556a4cef3ad67c0 (diff)
Merge "Create a separate HandlerThread to use for I/O operations" into qt-dev
-rw-r--r--src/com/android/documentsui/archives/ReadableArchive.java25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/com/android/documentsui/archives/ReadableArchive.java b/src/com/android/documentsui/archives/ReadableArchive.java
index 7c6e67294..302f582f5 100644
--- a/src/com/android/documentsui/archives/ReadableArchive.java
+++ b/src/com/android/documentsui/archives/ReadableArchive.java
@@ -17,6 +17,7 @@
package com.android.documentsui.archives;
import static android.os.ParcelFileDescriptor.MODE_READ_ONLY;
+
import static com.android.documentsui.base.SharedMinimal.DEBUG;
import android.content.Context;
@@ -28,7 +29,7 @@ import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.FileUtils;
import android.os.Handler;
-import android.os.Looper;
+import android.os.HandlerThread;
import android.os.ParcelFileDescriptor;
import android.os.storage.StorageManager;
import android.provider.DocumentsContract;
@@ -38,6 +39,10 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.util.Preconditions;
+import org.apache.commons.compress.archivers.ArchiveEntry;
+import org.apache.commons.compress.archivers.ArchiveException;
+import org.apache.commons.compress.compressors.CompressorException;
+import org.apache.commons.compress.utils.IOUtils;
import java.io.File;
import java.io.FileNotFoundException;
@@ -50,11 +55,6 @@ import java.util.Enumeration;
import java.util.List;
import java.util.Stack;
-import org.apache.commons.compress.archivers.ArchiveEntry;
-import org.apache.commons.compress.archivers.ArchiveException;
-import org.apache.commons.compress.compressors.CompressorException;
-import org.apache.commons.compress.utils.IOUtils;
-
/**
* Provides basic implementation for extracting and accessing
* files within archives exposed by a document provider.
@@ -67,6 +67,8 @@ public class ReadableArchive extends Archive {
private final StorageManager mStorageManager;
private final ArchiveHandle mArchiveHandle;
private final ParcelFileDescriptor mParcelFileDescriptor;
+ private final Handler mHandler;
+ private HandlerThread mHandlerThread;
private ReadableArchive(
Context context,
@@ -170,6 +172,10 @@ public class ReadableArchive extends Archive {
parentList.add(entry);
}
+
+ mHandlerThread = new HandlerThread(TAG);
+ mHandlerThread.start();
+ mHandler = new Handler(mHandlerThread.getLooper());
}
/**
@@ -270,7 +276,7 @@ public class ReadableArchive extends Archive {
try {
return mStorageManager.openProxyFileDescriptor(MODE_READ_ONLY,
- new Proxy(mArchiveHandle, entry), new Handler(Looper.getMainLooper()));
+ new Proxy(mArchiveHandle, entry), mHandler);
} catch (IOException e) {
throw new IllegalStateException(e);
} catch (ArchiveException e) {
@@ -353,5 +359,10 @@ public class ReadableArchive extends Archive {
*/
IOUtils.closeQuietly(mParcelFileDescriptor);
}
+
+ if (mHandlerThread != null) {
+ mHandlerThread.quitSafely();
+ mHandlerThread = null;
+ }
}
}