Обычно я управляю sharedPreferences
в своих проектах так: я создаю класс с именем AppPreferences
, а затем создаю в нем методы getters и setters для чтения и записи некоторых предпочтений. Это помогает мне управлять всеми предпочтениями, а также все пользовательские настройки находятся в одном месте.
import android.content.Context;
import android.content.SharedPreferences;
public class AppPreferences {
private static AppPreferences mAppPreferences;
protected Context mContext;
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mSharedPreferencesEditor;
private AppPreferences(Context context) {
mContext = context;
mSharedPreferences = context.getSharedPreferences("AppPreferences", Context.MODE_PRIVATE);
mSharedPreferencesEditor = mSharedPreferences.edit();
}
/**
* Creates single instance of AppPreferences
*
* @param context - context of Activity or Service
* @return Returns instance of Class AppPreferences
*/
public static synchronized AppPreferences getInstance(Context context) {
if (mAppPreferences == null) {
mAppPreferences = new AppPreferences(context.getApplicationContext());
}
return mAppPreferences;
}
/**
* Stores String value in preference
*
* @param key - key of preference
* @param value - value for that key
*/
public void setValue(String key, String value) {
mSharedPreferencesEditor.putString(key, value);
mSharedPreferencesEditor.commit();
}
/**
* Stores int value in preference
*
* @param key - key of preference
* @param value - value for that key
*/
public void setValue(String key, int value) {
mSharedPreferencesEditor.putInt(key, value);
mSharedPreferencesEditor.commit();
}
/**
* Stores Double value in String format in preference
*
* @param key - key of preference
* @param value - value for that key
*/
public void setValue(String key, double value) {
setValue(key, Double.toString(value));
}
/**
* Stores long value in preference
*
* @param key - key of preference
* @param value - value for that key
*/
public void setValue(String key, long value) {
mSharedPreferencesEditor.putLong(key, value);
mSharedPreferencesEditor.commit();
}
/**
* Stores boolean value in preference
*
* @param key - key of preference
* @param value - value for that key
*/
public void setValue(String key, boolean value) {
mSharedPreferencesEditor.putBoolean(key, value);
mSharedPreferencesEditor.commit();
}
/**
* Retrieves String value from preference
*
* @param key - key of preference
* @param defaultValue - default value if no key found
*/
public String getStringValue(String key, String defaultValue) {
return mSharedPreferences.getString(key, defaultValue);
}
/**
* Retrieves int value from preference
*
* @param key - key of preference
* @param defaultValue - default value if no key found
*/
public int getIntValue(String key, int defaultValue) {
return mSharedPreferences.getInt(key, defaultValue);
}
/**
* Retrieves long value from preference
*
* @param key - key of preference
* @param defaultValue - default value if no key found
*/
public long getLongValue(String key, long defaultValue) {
return mSharedPreferences.getLong(key, defaultValue);
}
/**
* Retrieves boolean value from preference
*
* @param keyFlag - key of preference
* @param defaultValue default value if no key found
*/
public boolean getBoolanValue(String keyFlag, boolean defaultValue) {
return mSharedPreferences.getBoolean(keyFlag, defaultValue);
}
/**
* Removes key from preference
*
* @param key - key of preference that is to be deleted
*/
public void removeKey(String key) {
if (mSharedPreferencesEditor != null) {
mSharedPreferencesEditor.remove(key);
mSharedPreferencesEditor.commit();
}
}
/**
* Clears all the preferences stored
*/
public void clear() {
mSharedPreferencesEditor.clear().commit();
}
}
Теперь вы можете использовать приведенный выше пример в любом месте вашего проекта, а когда вы хотите что-то удалить, просто вызовите функцию removeKey
и введите ключ.
ПОБОЧНОЕ ПРИМЕЧАНИЕ: Создайте файл Constants.java в своем проекте и добавьте в него все ключи и статические переменные, чтобы вам не приходилось беспокоиться о написании ключей и обо всех.