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,30 +111,21 @@ 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(
(completer) -> {
executor.execute(() -> {
File cachePath;
try {
cachePath = File.createTempFile("long_screenshot_cache_", ".tmp");
try (FileOutputStream stream = new FileOutputStream(cachePath)) {
bitmap.compress(mCompressFormat, mQuality, stream);
} catch (IOException e) {
if (cachePath.exists()) {
//noinspection ResultOfMethodCallIgnored
cachePath.delete();
cachePath = null;
}
completer.setException(e);
}
if (cachePath != null) {
completer.set(cachePath);
}
try (FileOutputStream stream = new FileOutputStream(outputFile)) {
bitmap.compress(mCompressFormat, mQuality, stream);
completer.set(outputFile);
} catch (IOException e) {
// Failed to create a new file
if (outputFile.exists()) {
//noinspection ResultOfMethodCallIgnored
outputFile.delete();
}
completer.setException(e);
}
});

View File

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