From 389119c4685603528c1768dd45167e06ed568ee2 Mon Sep 17 00:00:00 2001 From: seven332 Date: Wed, 30 Mar 2016 22:55:15 +0800 Subject: [PATCH] Check storage before download image --- .../com/hippo/ehviewer/spider/SpiderDen.java | 16 ++++++++++++++++ .../com/hippo/ehviewer/spider/SpiderQueen.java | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.java b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.java index 9df60092b..e0f8a57ac 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.java +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.java @@ -76,6 +76,11 @@ public final class SpiderDen { if (dir != null) { // Read from DB String dirname = EhDB.getDownloadDirname(galleryInfo.gid); + if (null != dirname) { + // Some dirname may be invalid in some version + dirname = FileUtils.sanitizeFilename(dirname); + EhDB.putDownloadDirname(galleryInfo.gid, dirname); + } // Find it if (null == dirname) { @@ -128,6 +133,17 @@ public final class SpiderDen { return mDownloadDir != null && mDownloadDir.ensureDir(); } + public boolean isReady() { + switch (mMode) { + case SpiderQueen.MODE_READ: + return sCache != null; + case SpiderQueen.MODE_DOWNLOAD: + return mDownloadDir != null && mDownloadDir.isDirectory(); + default: + return false; + } + } + @Nullable public UniFile getDownloadDir() { return mDownloadDir != null && mDownloadDir.isDirectory() ? mDownloadDir : null; diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java index eef0c9afe..eca543ebf 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java @@ -1238,7 +1238,7 @@ public class SpiderQueen implements Runnable { Log.i(TAG, Thread.currentThread().getName() + ": start"); } - while (!Thread.currentThread().isInterrupted() && runInternal()); + while (mSpiderDen.isReady() && !Thread.currentThread().isInterrupted() && runInternal()); boolean finish; // Clear in spider worker array