Android数据存储之SharedPreferences

简介

存储方式:以键值对的形式存储在xml中
特点:轻量级
应用场景:应用中的配置、参数属性
存储路径:/data/data/package name/shared_prefs

使用步骤

  • 存入数据
1、通过getSharedPreferences()获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("dongbo", MODE_PRIVATE);
2、通过Editor获取编辑器对象
SharedPreferences.Editor edit = sharedPreferences.edit();
3、以键值对的方式存储数据
edit.putString("ceshi", content);
4、提交修改数据
edit.apply();
  • 读取数据
1、通过getSharedPreferences()获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("dongbo", MODE_PRIVATE);
2、通过getXXX存储类型类获取数据
sharedPreferences.getString("ceshi", "123");
//这里的123含义:若没有对应的key存在,则返回默认值
  • 移除某条数据

apply()与commit()的区别

在开发过程中不论我们使用commit()还是apply()都是没有什么区别的

commit()是同步存储的过程,只有当内存和磁盘都储存完成才会做之后事情
applh()是异步存储的过程,存储到内存上是同步存储,但是存储到磁盘上的方式是属于异步的存储方式

下面是我的工具类

/**
 * @Author: DongBo
 * @Date: 2020/2/3 14:01
 */
public class SpUtil {
    //存储的文件名
    private static String SHARE_FILE_NAME = "project";
    public static Context mContext;


    /**
     * 存储数据
     *
     * @param key
     * @param obj 存储的类型
     */
    public static void putData(String key, Object obj) {
        SharedPreferences shp = mContext.getSharedPreferences(SHARE_FILE_NAME, Context.MODE_PRIVATE);
        Editor editor = shp.edit();
        if (obj instanceof String) {
            editor.putString(key, (String) obj).commit();
        } else if (obj instanceof Boolean) {
            editor.putBoolean(key, (Boolean) obj).commit();
        } else if (obj instanceof Integer) {
            editor.putInt(key, (Integer) obj).commit();
        } else if (obj instanceof Float) {
            editor.putFloat(key, (Float) obj).commit();
        } else if (obj instanceof Long) {
            editor.putLong(key, (Long) obj).commit();
        }
    }

    /**
     * 读取数据
     *
     * @param key
     * @param obj 默认值
     * @return
     */
    public static Object getData(String key, Object obj) {
        try {
            SharedPreferences sp = mContext.
                    getSharedPreferences(SHARE_FILE_NAME, Context.MODE_PRIVATE);
            if (obj instanceof String) {
                return sp.getString(key, (String) obj);
            } else if (obj instanceof Boolean) {
                return sp.getBoolean(key, (Boolean) obj);
            } else if (obj instanceof Integer) {
                return sp.getInt(key, (Integer) obj);
            } else if (obj instanceof Float) {
                return sp.getFloat(key, (Float) obj);
            } else if (obj instanceof Long) {
                return sp.getLong(key, (Long) obj);
            }
            return null;
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * 清除某个key值所对应的值
     *
     * @param key
     */
    public static void removeData(String key) {
        SharedPreferences sp = mContext.
                getSharedPreferences(SHARE_FILE_NAME, Context.MODE_PRIVATE);
        sp.edit().remove(key).commit();
    }

    /**
     * 清除所有数据
     */
    public static void clearData() {
        SharedPreferences sp = mContext.
                getSharedPreferences(SHARE_FILE_NAME, Context.MODE_PRIVATE);
        sp.edit().clear().commit();
    }

}

若有不足,请大家指教

数据存储相关文章
Android数据存储之文件存储
Android数据存储之SharedPreferences
Android数据存储之SQLite存储

你可能感兴趣的:(Android数据存储之SharedPreferences)