{
if (sApplyMethod != null)
{
sApplyMethod.invoke(editor);
return;
}
} catch (IllegalArgumentException e)
{
} catch (IllegalAccessException e)
{
} catch (InvocationTargetException e)
{
}
editor.commit();
}
}
}
对SharedPreference的使用做了建议的封装,对外公布出put,get,remove,clear等等方法;
-
注意一点,里面所有的commit操作使用了SharedPreferencesCompat.apply进行了替代,目的是尽可能的使用apply代替commit.
-
首先说下为什么,因为commit方法是同步的,并且我们很多时候的commit操作都是UI线程中,毕竟是IO操作,尽可能异步;
-
所以我们使用apply进行替代,apply异步的进行写入;
-
但是apply相当于commit来说是new API呢,为了更好的兼容,我们做了适配;
-
SharedPreferencesCompat也可以给大家创建兼容类提供了一定的参考~~
2. SPUtils.java
public class PreferencesUtils {
public static String PREFERENCE_NAME = “TrineaAndroidCommon”;
private PreferencesUtils() {
throw new AssertionError();
}
/**
-
put string preferences
-
@param context
-
@param key The name of the preference to modify
-
@param value The new value for the preference
-
@return True if the new values were successfully written to persistent storage.
*/
public static boolean putString(Context context, String key, String value) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(key, value);
return editor.commit();
}
/**
-
get string preferences
-
@param context
-
@param key The name of the preference to retrieve
-
@return The preference value if it exists, or null. Throws ClassCastException if there is a preference with this
-
name that is not a string
-
@see #getString(Context, String, String)
*/
public static String getString(Context context, String key) {
return getString(context, key, null);
}
/**
-
get string preferences
-
@param context
-
@param key The name of the preference to retrieve
-
@param defaultValue Value to return if this preference does not exist
-
@return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with
-
this name that is not a string
*/
public static String getString(Context context, String key, String defaultValue) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return settings.getString(key, defaultValue);
}
/**
-
put int preferences
-
@param context
-
@param key The name of the preference to modify
-
@param value The new value for the preference
-
@return True if the new values were successfully written to persistent storage.
*/
public static boolean putInt(Context context, String key, int value) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putInt(key, value);
return editor.commit();
}
/**
-
get int preferences
-
@param context
-
@param key The name of the preference to retrieve
-
@return The preference value if it exists, or -1. Throws ClassCastException if there is a preference with this
-
name that is not a int
-
@see #getInt(Context, String, int)
*/
public static int getInt(Context context, String key) {
return getInt(context, key, -1);
}
/**
-
get int preferences
-
@param context
-
@param key The name of the preference to retrieve
-
@param defaultValue Value to return if this preference does not exist
-
@return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with
-
this name that is not a int
*/
public static int getInt(Context context, String key, int defaultValue) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return settings.getInt(key, defaultValue);
}
/**
-
put long preferences
-
@param context
-
@param key The name of the preference to modify
-
@param value The new value for the preference
-
@return True if the new values were successfully written to persistent storage.
*/
public static boolean putLong(Context context, String key, long value) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putLong(key, value);
return editor.commit();
}
/**
-
get long preferences
-
@param context
-
@param key The name of the preference to retrieve
-
@return The preference value if it exists, or -1. Throws ClassCastException if there is a preference with this
-
name that is not a long
-
@see #getLong(Context, String, long)
*/
public static long getLong(Context context, String key) {
return getLong(context, key, -1);
}
/**
-
get long preferences
-
@param context
-
@param key The name of the preference to retrieve
-
@param defaultValue Value to return if this preference does not exist
-
@return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with
-
this name that is not a long
*/
public static long getLong(Context context, String key, long defaultValue) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return settings.getLong(key, defaultValue);
}
/**
-
put float preferences
-
@param context
-
@param key The name of the preference to modify
-
@param value The new value for the preference
-
@return True if the new values were successfully written to persistent storage.
*/
public static boolean putFloat(Context context, String key, float value) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putFloat(key, value);
return editor.commit();
}
/**
-
get float preferences
-
@param context
-
@param key The name of the preference to retrieve
-
@return The preference value if it exists, or -1. Throws ClassCastException if there is a preference with this
-
name that is not a float
-
@see #getFloat(Context, String, float)
*/
public static float getFloat(Context context, String key) {
return getFloat(context, key, -1);
}
/**
-
get float preferences
-
@param context
-
@param key The name of the preference to retrieve
-
@param defaultValue Value to return if this preference does not exist
-
@return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with
-
this name that is not a float
*/
public static float getFloat(Context context, String key, float defaultValue) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return settings.getFloat(key, defaultValue);
}
/**
-
put boolean preferences
-
@param context
-
@param key The name of the preference to modify
-
@param value The new value for the preference
-
@return True if the new values were successfully written to persistent storage.
*/
public static boolean putBoolean(Context context, String key, boolean value) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(key, value);
return editor.commit();
}
/**
-
get boolean preferences, default is false
-
@param context
-
@param key The name of the preference to retrieve
-
@return The preference value if it exists, or false. Throws ClassCastException if there is a preference with this
-
name that is not a boolean
-
@see #getBoolean(Context, String, boolean)
*/
public static boolean getBoolean(Context context, String key) {
return getBoolean(context, key, false);
}
/**
-
get boolean preferences
-
@param context
-
@param key The name of the preference to retrieve
-
@param defaultValue Value to return if this preference does not exist
-
@return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with
-
this name that is not a boolean
*/
public static boolean getBoolean(Context context, String key, boolean defaultValue) {
SharedPreferences settings = context.get