diff --git a/app/src/main/java/org/fdroid/fdroid/CleanCacheService.java b/app/src/main/java/org/fdroid/fdroid/CleanCacheService.java index bb1267cf7..9089b12c6 100644 --- a/app/src/main/java/org/fdroid/fdroid/CleanCacheService.java +++ b/app/src/main/java/org/fdroid/fdroid/CleanCacheService.java @@ -61,6 +61,7 @@ public class CleanCacheService extends IntentService { clearOldFiles(ApkCache.getApkCacheDir(getBaseContext()), Preferences.get().getKeepCacheTime()); deleteStrayIndexFiles(); deleteOldInstallerFiles(); + deleteOldIcons(); } /** @@ -118,6 +119,13 @@ public class CleanCacheService extends IntentService { } } + /** + * Delete cached icons that have not been accessed in over a year. + */ + private void deleteOldIcons() { + clearOldFiles(Utils.getIconsCacheDir(this), TimeUnit.DAYS.toMillis(365)); + } + /** * Recursively delete files in {@code f} that were last used * {@code millisAgo} milliseconds ago. On {@code android-21} and newer, this diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java index 548e6582a..79fe4cdf3 100644 --- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java +++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java @@ -45,7 +45,6 @@ import com.nostra13.universalimageloader.cache.disc.impl.LimitedAgeDiskCache; import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; -import com.nostra13.universalimageloader.utils.StorageUtils; import org.acra.ACRA; import org.acra.ReportingInteractionMode; @@ -60,7 +59,6 @@ import org.fdroid.fdroid.data.Repo; import org.fdroid.fdroid.net.IconDownloader; import org.fdroid.fdroid.net.WifiStateChangeService; -import java.io.File; import java.net.URL; import java.net.URLStreamHandler; import java.net.URLStreamHandlerFactory; @@ -262,8 +260,7 @@ public class FDroidApp extends Application { ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) .imageDownloader(new IconDownloader(getApplicationContext())) .diskCache(new LimitedAgeDiskCache( - new File(StorageUtils.getCacheDirectory(getApplicationContext(), true), - "icons"), + Utils.getIconsCacheDir(this), null, new FileNameGenerator() { @Override diff --git a/app/src/main/java/org/fdroid/fdroid/Utils.java b/app/src/main/java/org/fdroid/fdroid/Utils.java index 1d66b371a..c39b0ab1a 100644 --- a/app/src/main/java/org/fdroid/fdroid/Utils.java +++ b/app/src/main/java/org/fdroid/fdroid/Utils.java @@ -33,6 +33,7 @@ import android.util.Log; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; +import com.nostra13.universalimageloader.utils.StorageUtils; import org.fdroid.fdroid.compat.FileCompat; import org.fdroid.fdroid.data.Repo; @@ -107,6 +108,14 @@ public final class Utils { return "/icons-120/"; } + /** + * @return the directory where cached icons are stored + */ + public static File getIconsCacheDir(Context context) { + File cacheDir = StorageUtils.getCacheDirectory(context.getApplicationContext(), true); + return new File(cacheDir, "icons"); + } + public static void copy(InputStream input, OutputStream output) throws IOException { byte[] buffer = new byte[BUFFER_SIZE]; while (true) {