android中的SharePerference怎么用简单
2017-09-14 本文已影响78人
杨hai
java 版本
android几种缓存数据的方法之一的SharePerference的使用,需要传递好几个参数,为了方便使用,我做了如下包装:
import android.content.Context;
import android.content.SharedPreferences;
import cn.dslc.dslc.common.constansts.AppConstant;
/**
* Created by yh on 16/6/13.
*/
public class ShareUtils {
private static Context mContext;
private static SharedPreferences sharedPreferences;
private static SharedPreferences.Editor editor;
public static void init(Context context) {
mContext = context;
sharedPreferences = mContext.getSharedPreferences(AppConstant.ShareName.SHARE_NAME, Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
}
public static void saveString(String key, String value) {
editor.putString(key, value);
editor.commit();
}
public static String getString(String key, String normal) {
return sharedPreferences.getString(key, normal);
}
public static String getString(String key) {
return sharedPreferences.getString(key, "");
}
public static void saveInteger(String key, int value) {
editor.putInt(key, value);
editor.commit();
}
public static int getInteger(String key, int normal) {
return sharedPreferences.getInt(key, normal);
}
public static int getInteger(String key) {
return sharedPreferences.getInt(key, 0);
}
public static Boolean getBoolean(String key) {
return sharedPreferences.getBoolean(key, true);
}
public static Boolean getBoolean(String key, boolean b) {
return sharedPreferences.getBoolean(key, b);
}
public static void setBoolean(String key, boolean value) {
editor.putBoolean(key, value).commit();
}
/**
* 移除key
*
* @param key
*/
public static void remove(String key) {
editor.remove(key).commit();
}
}
在使用前,需要在application中init一下,在其他使用的地方如下方式:
ShareUtils.saveString("key","value");
kotlin 版本
import android.content.Context
import manage.ad.yiba.com.admanage.App
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty
/**
* Created by yh on 8/25/17.
*/
class Preference<T>(context: Context = App.instance, val name: String?, val default: T) : ReadWriteProperty<Any?, T> {
val prefs by lazy {
context.getSharedPreferences("yiba",Context.MODE_PRIVATE)
}
override fun getValue(thisRef: Any?, property: KProperty<*>): T = with(prefs){
when (default) {
is Long -> {
getLong(name, default)
}
is String -> {
getString(name, default)
}
is Float -> {
getFloat(name, default)
}
is Int -> {
getInt(name, default)
}
is Boolean -> {
getBoolean(name, default)
}
else -> {
throw IllegalArgumentException("This type can be saved into Preferences")
}
} as T
}
override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) = with(prefs.edit()){
when (value) {
is Long -> putLong(name, value)
is String -> putString(name, value)
is Float -> putFloat(name, value)
is Int -> putInt(name, value)
is Boolean -> putBoolean(name, value)
else -> {
throw IllegalArgumentException("存储的类型不存在,请确认储存类型")
}
}.apply()
}
}