SharePreference封装成工具类

简介: 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();
相关文章
|
XML 前端开发 IDE
在 Compose 中使用 Jetpack 组件库
在 Compose 中使用 Jetpack 组件库
890 0
|
4月前
|
XML Java Android开发
Android关于BottomNavigationView效果实现指南
本文详细介绍了Android中BottomNavigationView的实现与定制方法,涵盖颜色设置、图标修改、字体大小调整及多色图标处理等问题。通过XML和Java代码两种方式,解决图标颜色变化、点击效果等问题,并提供去除ActionBar的实现步骤。适合初学者及进阶开发者参考,助力打造更美观、功能丰富的底部导航栏。文末附源码,方便实践操作。
488 28
Android关于BottomNavigationView效果实现指南
|
Oracle Java 关系型数据库
Windows11 系统中配置Java环境变量
Windows11 系统中配置Java环境变量
807 0
|
前端开发
css 实用技巧 —— div在div中水平垂直居中(两种方法)
css 实用技巧 —— div在div中水平垂直居中(两种方法)
462 3
深入理解Spring Boot中的配置加载顺序
深入理解Spring Boot中的配置加载顺序
|
存储 Android开发
详细解读Android获取已安装应用信息(图标,名称,版本号,包)
详细解读Android获取已安装应用信息(图标,名称,版本号,包)
449 0
|
数据库
GreenDao 3.0 中insert insertOrReplace save 区别
GreenDao 3.0 中insert insertOrReplace save 区别
|
XML Java Android开发
Android App手势冲突处理中上下左右滑动的处理以及侧滑边缘菜单的讲解及实战(附源码 可直接使用)
Android App手势冲突处理中上下左右滑动的处理以及侧滑边缘菜单的讲解及实战(附源码 可直接使用)
902 0
|
Android开发
Android | Compose 初上手(下)
Android | Compose 初上手(下)
Android | Compose 初上手(下)
|
监控 Java 程序员
详解Java中的异常体系结构(throw,throws,try-catch,finally,自定义异常)
详解Java中的异常体系结构(throw,throws,try-catch,finally,自定义异常)
310 0

热门文章

最新文章