SharePreference封装成工具类

Android开发中经常需要保存一些用户配置信息,一般都会保存在SharePreference当中。

但是每次都用getSharedPreferences太麻烦了。


我在项目中对SharePreference的频率操作封装在一个类中。

在使用时不需要传入Context和key,保存的时候只需要传入值,获取时不需要传入key。

/**
 * SharePreference基类
 * 这里只写了对最常用的三种基本数据类型的操作。
 */
public class BasePreference {
    private Context context;
    private SharedPreferences sp;
    private SharedPreferences.Editor editor;
    private String FILE_NAME = "userinfo";

    protected BasePreference(Context context) {
        this.context = context;
        sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
    }

    protected void setString(String key, String value) {
        sp.edit().putString(key, value).apply();
    }

    protected String getString(String key) {
        return sp.getString(key, null);
    }

    protected void setBoolean(String key, boolean value) {
        sp.edit().putBoolean(key, value).apply();
    }

    protected boolean getBoolean(String key) {
        return sp.getBoolean(key, false);
    }

    protected void setInt(String key, int value) {
        sp.edit().putInt(key, value).apply();
    }

    protected int getInt(String key) {
        return sp.getInt(key, 0);
    }
}

然后创建一个子类,实现此基类

/**
 * 具体实现sp
 * Created by Dujuncan on 2016/10/30.
 */
public class PreferenceUtils extends BasePreference {
    private static PreferenceUtils preferenceUtils;
    /**
     * 需要增加key就在这里新建
     */
    //用户名的key
    private String USER_NAME = "user_name";
    //是否首次启动的key
    private String FIRST_LAUNCH = "first_launch";


    private PreferenceUtils(Context context) {
        super(context);
    }

    /**
     * 这里我通过自定义的Application来获取Context对象,所以在获取preferenceUtils时不需要传入Context。
     * @return
     */
    public synchronized static PreferenceUtils getInstance() {
        if (null == preferenceUtils) {
            preferenceUtils = new PreferenceUtils(MyApplication.getInstance());
        }
        return preferenceUtils;
    }

    public void setFirstLaunch(boolean isFirst) {
        setBoolean(FIRST_LAUNCH,isFirst);
    }

    public boolean getFirstlaunch() {
        return getBoolean(FIRST_LAUNCH);
    }

    public void setUserName(String name) {
        setString("fefe", name);
    }

    public String getUSER_NAME_KEY() {
        return getString(USER_NAME);
    }
}

最后在Activity中使用

        PreferenceUtils preferenceUtils = PreferenceUtils.getInstance();
        preferenceUtils.setFirstLaunch(true);
        String userName = preferenceUtils.getUserName();



猜你喜欢

转载自blog.csdn.net/adojayfan/article/details/52973610
今日推荐