package com.vaguehope.onosendai.util; import android.content.Context; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceManager; public abstract class PrefCache<T> implements OnPreferenceChangeListener { private final String prefKey; private final String defaultVal; private volatile T cache; public PrefCache (final String prefKey, final String defaultVal) { this.prefKey = prefKey; this.defaultVal = defaultVal; } @Override public boolean onPreferenceChange (final Preference preference, final Object newValue) { this.cache = null; return true; } public T read (final Context context) { if (this.cache == null) { this.cache = parse(PreferenceManager.getDefaultSharedPreferences(context).getString(this.prefKey, this.defaultVal)); } return this.cache; } protected abstract T parse (String s); }