From fd6baef302af1e1a728209e90cabb6dd9473dcb6 Mon Sep 17 00:00:00 2001 From: ebbnormal Date: Sat, 4 Nov 2017 12:37:22 -0700 Subject: [PATCH] vielleicht besser, mein Bruder! --- .../isbx/androidtools/media/ImageResizer.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/com/isbx/androidtools/media/ImageResizer.java b/core/src/main/java/com/isbx/androidtools/media/ImageResizer.java index fd70e0a..3b7523a 100644 --- a/core/src/main/java/com/isbx/androidtools/media/ImageResizer.java +++ b/core/src/main/java/com/isbx/androidtools/media/ImageResizer.java @@ -39,13 +39,14 @@ */ public class ImageResizer { - private static final int MAX_FILES = 10; // TODO handle files more intelligently + private static final int MAX_FILE_LIFESPAN = 86400000; // One day in milliseconds private static final String FILE_NAME_FORMAT = "image%d.jpg"; private Context context; private ImageResizeConfig config; private int savedFiles = 0; + private int prunedFiles = 0; /** * Creates a new ImageResizer that will use the given config to scale images. @@ -198,9 +199,7 @@ public Uri scaleImage(Uri sourceUri, ImageResizeConfig.Dimension targetDimension OutputStream os = null; try { - if (savedFiles >= MAX_FILES) { - savedFiles = 0; - } + pruneFiles(); String fileName = String.format(Locale.US, FILE_NAME_FORMAT, savedFiles++); os = context.openFileOutput(fileName, Context.MODE_PRIVATE); @@ -303,16 +302,23 @@ public static Bitmap scaleBitmap(Bitmap source, ImageResizeConfig.Dimension targ } /** - * Deletes any temporary files that may have been created by previous resize operations. This - * will clear temporary files created by all ImageResizer instances, not just - * the current one. + * Deletes any files that are more than a day old. If all files are past this mark + * then the savedFiles and prunedFiles counts are reset. */ - public void clearFiles() { - for (int i = 0; i < MAX_FILES; i++) { - String fileName = String.format(Locale.US, FILE_NAME_FORMAT, i); + public void pruneFiles() { + for (int i = 0; i < savedFiles; i++) { + if (prunedFiles == savedFiles) { + savedFiles = 0; + prunedFiles = 0; + break; + } + String fileName = String.format(Locale.US, FILE_NAME_FORMAT, i); + long lastModified = context.getFileStreamPath(fileName).lastModified(); + if (System.currentTimeInMillis() - lastModified >= MAX_FILE_LIFESPAN) { context.deleteFile(fileName); - } - savedFiles = 0; + prunedFiles++; + } + } } /**