From 1cac0f13c477097694242a1271804d19547adab4 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 30 Oct 2019 13:37:14 +0300 Subject: store thumbnails outside of cache/ to prevent automatic cleanup --- .../java/org/fox/ttcomics2/ComicListFragment.java | 6 ++--- .../java/org/fox/ttcomics2/CommonActivity.java | 29 ++++++++++++++++++++-- .../java/org/fox/ttcomics2/DatabaseHelper.java | 4 +-- .../fox/ttcomics2/utils/CacheCleanupService.java | 4 +-- 4 files changed, 34 insertions(+), 9 deletions(-) (limited to 'org.fox.ttcomics') diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java index 23d6a62..89f9876 100644 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java @@ -205,10 +205,10 @@ public class ComicListFragment extends StateSavedFragment implements OnItemClick } - String cacheFilename = CommonActivity.getCacheFileName(m_activity, firstChild != null ? firstChild : filePath + "/" + fileBaseName); + String thumbnailFileName = CommonActivity.getThumbnailFileName(m_activity, firstChild != null ? firstChild : filePath + "/" + fileBaseName); - if (cacheFilename != null) { - File thumbnailFile = new File(cacheFilename); + if (thumbnailFileName != null) { + File thumbnailFile = new File(thumbnailFileName); if (holder.thumbnail != null && thumbnailFile.exists()) { diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java index 9010dbb..3bd2631 100644 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java @@ -170,12 +170,29 @@ public class CommonActivity extends AppCompatActivity { return null; } + public static File getThumbnailDir(Context ctx) { + File baseDir = ctx.getFilesDir(); + + File thumbDir = new File(baseDir, "thumbnails"); + + if (!thumbDir.exists()) + thumbDir.mkdirs(); + + return thumbDir; + } + public static File getCacheDir(Context ctx) { return ctx.getCacheDir(); } + public static String getThumbnailFileName(Context ctx, String fileName) { + File file = new File(getThumbnailDir(ctx), md5(fileName) + ".png"); + + return file.getAbsolutePath(); + } + public static String getCacheFileName(Context ctx, String fileName) { - File file = new File(getCacheDir(ctx).getAbsolutePath() + "/" + md5(fileName) + ".png"); + File file = new File(getCacheDir(ctx), md5(fileName) + ".png"); return file.getAbsolutePath(); } @@ -201,7 +218,15 @@ public class CommonActivity extends AppCompatActivity { } public void cleanupCache() { - JobIntentService.enqueueWork(getApplicationContext(), CacheCleanupService.class, 0, new Intent()); + Intent serviceIntent = new Intent(); + serviceIntent.putExtra("workDir", getCacheDir(getApplicationContext()).getAbsolutePath()); + + JobIntentService.enqueueWork(getApplicationContext(), CacheCleanupService.class, 0, serviceIntent); + + serviceIntent = new Intent(); + serviceIntent.putExtra("workDir", getThumbnailDir(getApplicationContext()).getAbsolutePath()); + + JobIntentService.enqueueWork(getApplicationContext(), CacheCleanupService.class, 0, serviceIntent); } @Override diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/DatabaseHelper.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/DatabaseHelper.java index bb249bb..780f9aa 100644 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/DatabaseHelper.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/DatabaseHelper.java @@ -326,7 +326,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { // Get cover try { - File thumbnailFile = new File(CommonActivity.getCacheFileName(m_context, filePath)); + File thumbnailFile = new File(CommonActivity.getThumbnailFileName(m_context, filePath)); if (!thumbnailFile.exists()) { InputStream is = cba.getItem(0); @@ -364,7 +364,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { ++fileIndex; - publishProgress(Integer.valueOf(fileIndex), Integer.valueOf(archives.length)); + publishProgress(fileIndex, archives.length); } } diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/utils/CacheCleanupService.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/utils/CacheCleanupService.java index 871b026..28c0656 100644 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/utils/CacheCleanupService.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/utils/CacheCleanupService.java @@ -22,10 +22,10 @@ public class CacheCleanupService extends JobIntentService { } @Override protected void onHandleWork(Intent workIntent) { - Log.d(TAG, "starting..."); if (isStorageWritable()) { - File cachePath = CommonActivity.getCacheDir(this); + File cachePath = new File(workIntent.getStringExtra("workDir")); + Log.d(TAG, "starting for directory: " + cachePath); try { -- cgit v1.2.3