From b6a6863f6cf58193813051164e4bc1e08fd92325 Mon Sep 17 00:00:00 2001 From: seven332 Date: Tue, 15 Mar 2016 01:09:34 +0800 Subject: [PATCH] Add multi-thread-download setting and preload-image setting --- .../java/com/hippo/ehviewer/Settings.java | 22 +++++++++++++ .../hippo/ehviewer/spider/SpiderQueen.java | 13 +++++--- app/src/main/res/values-zh-rCN/strings.xml | 4 +++ app/src/main/res/values-zh-rHK/strings.xml | 4 +++ app/src/main/res/values-zh-rTW/strings.xml | 4 +++ app/src/main/res/values/arrays.xml | 32 +++++++++++++++++++ app/src/main/res/values/strings.xml | 4 +++ app/src/main/res/xml/download_settings.xml | 19 ++++++++++- 8 files changed, 96 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.java b/app/src/main/java/com/hippo/ehviewer/Settings.java index be73f8a8a..a910d9606 100644 --- a/app/src/main/java/com/hippo/ehviewer/Settings.java +++ b/app/src/main/java/com/hippo/ehviewer/Settings.java @@ -362,6 +362,28 @@ public class Settings { putString(KEY_DEFAULT_DOWNLOAD_LABEL, value); } + private static final String KEY_MULTI_THREAD_DOWNLOAD = "download_thread"; + private static final int DEFAULT_MULTI_THREAD_DOWNLOAD = 3; + + public static int getMultiThreadDownload() { + return getIntFromStr(KEY_MULTI_THREAD_DOWNLOAD, DEFAULT_MULTI_THREAD_DOWNLOAD); + } + + public static void putMultiThreadDownload(int value) { + putIntToStr(KEY_MULTI_THREAD_DOWNLOAD, value); + } + + private static final String KEY_PRELOAD_IMAGE = "preload_image"; + private static final int DEFAULT_PRELOAD_IMAGE = 5; + + public static int getPreloadImage() { + return getIntFromStr(KEY_PRELOAD_IMAGE, DEFAULT_PRELOAD_IMAGE); + } + + public static void putPreloadImage(int value) { + putIntToStr(KEY_PRELOAD_IMAGE, value); + } + /******************** ****** Favorites ********************/ 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 ca792223f..e678b3d3f 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java @@ -100,9 +100,6 @@ public class SpiderQueen implements Runnable { public static final int STATE_FINISHED = 2; public static final int STATE_FAILED = 3; - private static final int NUMBER_SPIDER_WORKER = 3; - private static final int NUMBER_PRELOAD = 5; - public static final String SPIDER_INFO_FILENAME = ".ehviewer"; private static final String[] URL_509_SUFFIX_ARRAY = { @@ -169,11 +166,17 @@ public class SpiderQueen implements Runnable { private final List mSpiderListeners = new ArrayList<>(); + private final int mSpiderWorkerNumber; + private final int mPreloadNumber; + private SpiderQueen(EhApplication application, @NonNull GalleryInfo galleryInfo) { mHttpClient = EhApplication.getOkHttpClient(application); mSpiderInfoCache = EhApplication.getSpiderInfoCache(application); mGalleryInfo = galleryInfo; mSpiderDen = new SpiderDen(mGalleryInfo); + + mSpiderWorkerNumber = Settings.getMultiThreadDownload(); + mPreloadNumber = Settings.getPreloadImage(); } public void addOnSpiderListener(OnSpiderListener listener) { @@ -494,7 +497,7 @@ public class SpiderQueen implements Runnable { } else { size = Integer.MAX_VALUE; } - for (int i = index + 1, n = index + i + NUMBER_PRELOAD; i < n && i < size; i++) { + for (int i = index + 1, n = index + i + mPreloadNumber; i < n && i < size; i++) { if (STATE_NONE == getPageState(i)) { mRequestPageQueue2.add(i); } @@ -538,7 +541,7 @@ public class SpiderQueen implements Runnable { private void ensureWorkers() { synchronized (mWorkerLock) { if (mWorkers == null) { - mWorkers = new Thread[NUMBER_SPIDER_WORKER]; + mWorkers = new Thread[mSpiderWorkerNumber]; } for (int i = 0, n = mWorkers.length; i < n; i++) { diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index b3c5cf984..f010f3c6a 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -319,6 +319,10 @@ 文档 恢复下载项 恢复下载目录里的所有下载项 + 下载线程数 + 最多同时下载 %s 张图片 + 预载图片 + 向后预载 %s 张图片 恢复中 未找到可恢复下载项 恢复失败 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 1f601f11b..5cf429e58 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -319,6 +319,10 @@ 文檔 恢復下載項 恢復下載目錄裏的所有下載項 + 下載線程數 + 最多同時下載 %s 張圖片 + 預載圖片 + 向後預載 %s 張圖片 恢復中 未找到可恢復下載項 恢復失敗 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 7f658b696..7238fc2e7 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -319,6 +319,10 @@ 文件 恢復下載項 恢復下載目錄裡的所有下載項 + 下載執行緒數 + 最多同時下載 %s 張圖片 + 預載圖片 + 向後預載 %s 張圖片 恢復中 未找到可恢復下載項 恢復失敗 diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 982c8efc1..1db70cd6e 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -34,6 +34,38 @@ @string/star_5 + + 1 + 3 + 5 + 7 + + + + 1 + 3 + 5 + 7 + + + + 3 + 5 + 7 + 11 + 13 + 17 + + + + 3 + 5 + 7 + 11 + 13 + 17 + + @string/settings_read_reading_direction_left_to_right @string/settings_read_reading_direction_right_to_Left diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2d4fde57d..e26bc2d92 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -356,6 +356,10 @@ You can\'t write any kind of data on your external SD card in Android 4.4+ unless you have hacked it Android 5.0+ provides new API to write on external SD card. Click the \"DOCUMENT\" button if you want to set download location to SD card Document + Multi thread download + Up to %s images + Preload image + Preload next %s image Restore download items Restore all download items in download location Restoring diff --git a/app/src/main/res/xml/download_settings.xml b/app/src/main/res/xml/download_settings.xml index cc2a4a496..28d3b41f0 100644 --- a/app/src/main/res/xml/download_settings.xml +++ b/app/src/main/res/xml/download_settings.xml @@ -16,12 +16,29 @@ --> + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + + +