From e9f51e2b1f0c5c3b47a2b3762956587efbeb7eac Mon Sep 17 00:00:00 2001 From: seven332 Date: Tue, 14 Jul 2015 15:20:33 +0800 Subject: [PATCH] Add clear image memory cache --- .../preference/AdvanceSettingsScene.java | 40 ++++++++++++++++--- .../hippo/scene/preference/Preference.java | 9 ++++- app/src/main/res/values-zh-rCN/strings.xml | 2 + app/src/main/res/values/strings.xml | 2 + beerbelly | 2 +- conaco | 2 +- yorozuya | 2 +- 7 files changed, 49 insertions(+), 10 deletions(-) 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