diff --git a/Clover/app/src/main/java/org/floens/chan/core/settings/BooleanSetting.java b/Clover/app/src/main/java/org/floens/chan/core/settings/BooleanSetting.java index 22fbcd24..31e82dea 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/settings/BooleanSetting.java +++ b/Clover/app/src/main/java/org/floens/chan/core/settings/BooleanSetting.java @@ -3,6 +3,9 @@ package org.floens.chan.core.settings; import android.content.SharedPreferences; public class BooleanSetting extends Setting { + private boolean hasCached = false; + private boolean cached; + public BooleanSetting(SharedPreferences sharedPreferences, String key, Boolean def) { super(sharedPreferences, key, def); } @@ -13,13 +16,20 @@ public class BooleanSetting extends Setting { @Override public Boolean get() { - return sharedPreferences.getBoolean(key, def); + if (hasCached) { + return cached; + } else { + cached = sharedPreferences.getBoolean(key, def); + hasCached = true; + return cached; + } } @Override public void set(Boolean value) { if (!value.equals(get())) { sharedPreferences.edit().putBoolean(key, value).apply(); + cached = value; onValueChanged(); } } diff --git a/Clover/app/src/main/java/org/floens/chan/core/settings/StringSetting.java b/Clover/app/src/main/java/org/floens/chan/core/settings/StringSetting.java index 267aa704..df699062 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/settings/StringSetting.java +++ b/Clover/app/src/main/java/org/floens/chan/core/settings/StringSetting.java @@ -3,6 +3,9 @@ package org.floens.chan.core.settings; import android.content.SharedPreferences; public class StringSetting extends Setting { + private boolean hasCached = false; + private String cached; + public StringSetting(SharedPreferences sharedPreferences, String key, String def) { super(sharedPreferences, key, def); } @@ -13,13 +16,20 @@ public class StringSetting extends Setting { @Override public String get() { - return sharedPreferences.getString(key, def); + if (hasCached) { + return cached; + } else { + cached = sharedPreferences.getString(key, def); + hasCached = true; + return cached; + } } @Override public void set(String value) { if (!value.equals(get())) { sharedPreferences.edit().putString(key, value).apply(); + cached = value; onValueChanged(); } }