Cache setting values

filtering
Floens 10 years ago
parent 2171e65cf4
commit 1454b15105
  1. 12
      Clover/app/src/main/java/org/floens/chan/core/settings/BooleanSetting.java
  2. 12
      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; import android.content.SharedPreferences;
public class BooleanSetting extends Setting<Boolean> { public class BooleanSetting extends Setting<Boolean> {
private boolean hasCached = false;
private boolean cached;
public BooleanSetting(SharedPreferences sharedPreferences, String key, Boolean def) { public BooleanSetting(SharedPreferences sharedPreferences, String key, Boolean def) {
super(sharedPreferences, key, def); super(sharedPreferences, key, def);
} }
@ -13,13 +16,20 @@ public class BooleanSetting extends Setting<Boolean> {
@Override @Override
public Boolean get() { public Boolean get() {
return sharedPreferences.getBoolean(key, def); if (hasCached) {
return cached;
} else {
cached = sharedPreferences.getBoolean(key, def);
hasCached = true;
return cached;
}
} }
@Override @Override
public void set(Boolean value) { public void set(Boolean value) {
if (!value.equals(get())) { if (!value.equals(get())) {
sharedPreferences.edit().putBoolean(key, value).apply(); sharedPreferences.edit().putBoolean(key, value).apply();
cached = value;
onValueChanged(); onValueChanged();
} }
} }

@ -3,6 +3,9 @@ package org.floens.chan.core.settings;
import android.content.SharedPreferences; import android.content.SharedPreferences;
public class StringSetting extends Setting<String> { public class StringSetting extends Setting<String> {
private boolean hasCached = false;
private String cached;
public StringSetting(SharedPreferences sharedPreferences, String key, String def) { public StringSetting(SharedPreferences sharedPreferences, String key, String def) {
super(sharedPreferences, key, def); super(sharedPreferences, key, def);
} }
@ -13,13 +16,20 @@ public class StringSetting extends Setting<String> {
@Override @Override
public String get() { public String get() {
return sharedPreferences.getString(key, def); if (hasCached) {
return cached;
} else {
cached = sharedPreferences.getString(key, def);
hasCached = true;
return cached;
}
} }
@Override @Override
public void set(String value) { public void set(String value) {
if (!value.equals(get())) { if (!value.equals(get())) {
sharedPreferences.edit().putString(key, value).apply(); sharedPreferences.edit().putString(key, value).apply();
cached = value;
onValueChanged(); onValueChanged();
} }
} }

Loading…
Cancel
Save