diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/preference/AdvanceSettingsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/preference/AdvanceSettingsScene.java
index 05b385b16..e3d32bc53 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/scene/preference/AdvanceSettingsScene.java
+++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/preference/AdvanceSettingsScene.java
@@ -18,21 +18,26 @@ package com.hippo.ehviewer.ui.scene.preference;
import android.content.res.Resources;
+import com.hippo.conaco.Conaco;
import com.hippo.ehviewer.BuildConfig;
import com.hippo.ehviewer.Constants;
+import com.hippo.ehviewer.EhApplication;
import com.hippo.ehviewer.R;
import com.hippo.scene.preference.Preference;
-import com.hippo.scene.preference.PreferenceCategory;
import com.hippo.scene.preference.PreferenceScene;
import com.hippo.scene.preference.PreferenceSet;
import com.hippo.scene.preference.SwitchPreference;
+import com.hippo.yorozuya.FileUtils;
import com.hippo.yorozuya.Messenger;
-public class AdvanceSettingsScene extends PreferenceScene implements Preference.OnValueChangeListener {
+public class AdvanceSettingsScene extends PreferenceScene implements
+ Preference.OnValueChangeListener, Preference.OnClickListener {
private static final String KEY_SHOW_APPLICATION_STATS = "show_application_stats";
private static final boolean DEFAULT_SHOW_APPLICATION_STATS = BuildConfig.DEBUG;
+ private static final String KEY_CLEAR_IMAGE_MEMORY_CACHE = "clear_image_memory_cache";
+
@Override
protected void onCreate(boolean rebirth) {
super.onCreate(rebirth);
@@ -51,18 +56,26 @@ public class AdvanceSettingsScene extends PreferenceScene implements Preference.
private PreferenceSet[] getPreferenceSet() {
Resources resources = getStageActivity().getResources();
+ // Stats
SwitchPreference statsPreference = new SwitchPreference(KEY_SHOW_APPLICATION_STATS,
resources.getString(R.string.settings_show_application_stats_title),
resources.getString(R.string.settings_show_application_stats_summary));
statsPreference.setDefaultValue(DEFAULT_SHOW_APPLICATION_STATS);
statsPreference.setOnValueChangeListener(this);
+ // Clear memory cache
+ Conaco conaco = EhApplication.getConaco(getStageActivity());
+ Preference clearMemoryCachePreference = new Preference(KEY_CLEAR_IMAGE_MEMORY_CACHE,
+ resources.getString(R.string.settings_clear_image_memory_cache_title),
+ String.format(resources.getString(R.string.settings_clear_image_memory_cache_summary),
+ FileUtils.humanReadableByteCount(conaco.memoryCacheSize(), false)));
+ clearMemoryCachePreference.setOnClickListener(this);
+
PreferenceSet preferenceSet = new PreferenceSet();
- preferenceSet.setPreferenceCategory(
- new PreferenceCategory(resources.getString(R.string.settings_advance)));
preferenceSet.setPreferenceList(new Preference[] {
- statsPreference
+ statsPreference,
+ clearMemoryCachePreference
});
return new PreferenceSet[] {
@@ -81,4 +94,21 @@ public class AdvanceSettingsScene extends PreferenceScene implements Preference.
return true;
}
}
+
+ @Override
+ public boolean onClick(Preference preference) {
+ String key = preference.getKey();
+ switch (key) {
+ case KEY_CLEAR_IMAGE_MEMORY_CACHE:
+ Conaco conaco = EhApplication.getConaco(getStageActivity());
+ conaco.clearMemoryCache();
+ Runtime.getRuntime().gc();
+ preference.setSummary(String.format(getStageActivity().getString(
+ R.string.settings_clear_image_memory_cache_summary),
+ FileUtils.humanReadableByteCount(conaco.memoryCacheSize(), false)));
+ return true;
+ default:
+ return false;
+ }
+ }
}
diff --git a/app/src/main/java/com/hippo/scene/preference/Preference.java b/app/src/main/java/com/hippo/scene/preference/Preference.java
index 9177f956f..8e04bc278 100644
--- a/app/src/main/java/com/hippo/scene/preference/Preference.java
+++ b/app/src/main/java/com/hippo/scene/preference/Preference.java
@@ -26,12 +26,12 @@ import android.widget.FrameLayout;
import com.hippo.ehviewer.R;
+// TODO Need a better way to update it
public class Preference extends PreferenceBase {
private int mPosition;
- private @NonNull
- String mKey;
+ private @NonNull String mKey;
private String mTitle;
private String mSummary;
@@ -57,6 +57,11 @@ public class Preference extends PreferenceBase {
return mSummary;
}
+ public void setSummary(String summary) {
+ mSummary = summary;
+ updateSummary(null);
+ }
+
public int getPosition() {
return mPosition;
}
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 6323e8393..74d8c2743 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -125,6 +125,8 @@
高级
显示应用状态
在屏幕右上角显示设备状态
+ 清理图片内存缓存
+ 大小:%s
排除语言
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6d56612a6..b04139db1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -149,6 +149,8 @@
Advance
Show application stats
Show application stats at the top-right corner of the screen
+ Clear image memory cache
+ Size: %s
Excluded languages
diff --git a/beerbelly b/beerbelly
index 942409c70..46549bb84 160000
--- a/beerbelly
+++ b/beerbelly
@@ -1 +1 @@
-Subproject commit 942409c7029636c3afcc41afc10da14b9267ea4c
+Subproject commit 46549bb84f60c8f79e6dc4f32d2282eac5f74a18
diff --git a/conaco b/conaco
index 740d293d0..cdf79500f 160000
--- a/conaco
+++ b/conaco
@@ -1 +1 @@
-Subproject commit 740d293d0af7a0af86706305e33203a74e06838f
+Subproject commit cdf79500f27f784b1c9c5c7c8423ba4e6310cce1
diff --git a/yorozuya b/yorozuya
index d5af27842..640d412a7 160000
--- a/yorozuya
+++ b/yorozuya
@@ -1 +1 @@
-Subproject commit d5af278425f1ca25f4ce06c89075aa318d62c97e
+Subproject commit 640d412a7ee4d48a5fa64e0c657cb48f564f1594