Merge "Always save long screenshot temp file to the same place" into sc-dev

This commit is contained in:
Matt Casey
2021-06-24 14:44:32 +00:00
committed by Android (Google) Code Review
2 changed files with 12 additions and 21 deletions

View File

@@ -111,32 +111,23 @@ class ImageExporter {
} }
/** /**
* Stores the given Bitmap to a temp file. * Writes the given Bitmap to outputFile.
*/ */
ListenableFuture<File> exportAsTempFile(Executor executor, Bitmap bitmap) { ListenableFuture<File> exportToRawFile(Executor executor, Bitmap bitmap,
final File outputFile) {
return CallbackToFutureAdapter.getFuture( return CallbackToFutureAdapter.getFuture(
(completer) -> { (completer) -> {
executor.execute(() -> { executor.execute(() -> {
File cachePath; try (FileOutputStream stream = new FileOutputStream(outputFile)) {
try {
cachePath = File.createTempFile("long_screenshot_cache_", ".tmp");
try (FileOutputStream stream = new FileOutputStream(cachePath)) {
bitmap.compress(mCompressFormat, mQuality, stream); bitmap.compress(mCompressFormat, mQuality, stream);
completer.set(outputFile);
} catch (IOException e) { } catch (IOException e) {
if (cachePath.exists()) { if (outputFile.exists()) {
//noinspection ResultOfMethodCallIgnored //noinspection ResultOfMethodCallIgnored
cachePath.delete(); outputFile.delete();
cachePath = null;
} }
completer.setException(e); completer.setException(e);
} }
if (cachePath != null) {
completer.set(cachePath);
}
} catch (IOException e) {
// Failed to create a new file
completer.setException(e);
}
}); });
return "Bitmap#compress"; return "Bitmap#compress";
} }

View File

@@ -228,8 +228,8 @@ public class LongScreenshotActivity extends Activity {
}); });
// Immediately export to temp image file for saved state // Immediately export to temp image file for saved state
mCacheSaveFuture = mImageExporter.exportAsTempFile(mBackgroundExecutor, mCacheSaveFuture = mImageExporter.exportToRawFile(mBackgroundExecutor,
mLongScreenshot.toBitmap()); mLongScreenshot.toBitmap(), new File(getCacheDir(), "long_screenshot_cache.png"));
mCacheSaveFuture.addListener(() -> { mCacheSaveFuture.addListener(() -> {
try { try {
// Get the temp file path to persist, used in onSavedInstanceState // Get the temp file path to persist, used in onSavedInstanceState