Android中SharedPreferences共享参数的封装

Android中存在五种数据存储方式:
一:SharedPreferences共享参数存储
二:SQLite数据存储
三:File文件存储
四:ContentProvider内容提供者
五:网络存储。

在项目中也是经常用到这几大存储方式来进行数据存储,项目中会不止一次的用到这些存储方式中的某一个或者某几个,要是每次用到的时候都去写一次,这不免很麻烦,代码也很不清晰,这个时候就需要对相应的方式进行自己的封装,让它能在项目中的任何时候都可以使用。接下来我就分享我在使用SharedPreferences的一些封装和对SharedPreferences的认识:

SharedPreferences的四种操作模式:
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:此模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件
Context.MODE_WORLD_READABLE:当前文件可以被读取
Context.MODE_WORLD_WRITEABLE:当前文件可以被写入

public class SharedPreferencesUtils {
    private SharedPreferences mPreferences;
    private static SharedPreferencesUtils sharedPreferencesUtils;

    private SharedPreferencesUtils(Context context) {
        if (mPreferences == null) {
            mPreferences = context.getSharedPreferences("dong", 0);
        }
    }
    /**
     * 获取单实例对象
     */
    public static SharedPreferencesUtils getInstance(Context context) {
        if (sharedPreferencesUtils == null) {
            sharedPreferencesUtils = new SharedPreferencesUtils(context);
        }
        return sharedPreferencesUtils;
    }
    /**
     * 存储String
     */
    public static void putString(SharedPreferencesUtils mPreferences, String key,
                                 String v) {
        mPreferences.mPreferences.edit().putString(key, v).commit();
    }
    /**
     * 取String
     */
    public static String getString(Context context, String key) {
        return getInstance(context).mPreferences.getString(key, "");
    }
    /**
     * 存储String
     */
    public static void putString(Context context, String key, String v) {
        getInstance(context).mPreferences.edit().putString(key, v).commit();
    }
    /**
     * 取String
     */
    public static String getString(SharedPreferencesUtils mPreferences, String key) {
        return mPreferences.mPreferences.getString(key, "");
    }
    /**
     * 取int
     */
    public static int getInt(SharedPreferencesUtils mPreferences, String key) {
        return mPreferences.mPreferences.getInt(key, -1);
    }
    /**
     * 取int
     */
    public static int getInt(Context context, String key) {
        return getInstance(context).mPreferences.getInt(key, -1);
    }
    /**
     * 存储String
     */
    public static void putInt(SharedPreferencesUtils mPreferences, String key,
                              int v) {
        mPreferences.mPreferences.edit().putInt(key, v).commit();
    }
    /**
     * 存储String
     */
    public static void putInt(Context context, String key, int v) {
        SharedPreferencesUtils.getInstance(context).mPreferences.edit().putInt(key, v).commit();

    }
    /**
     * 取Long
     */
    public static long getLong(Context context, String key) {
        return getInstance(context).mPreferences.getLong(key, -1);
    }
    /**
     * 存储String
     */
    public static void putLong(Context context, String key,
                               long v) {
        getInstance(context).mPreferences.edit().putLong(key, v).commit();
    }
    /**
     * 存储String
     */
    public static void putLong(Context context, String key, String v) {
        long l = 0;
        try {
            l = Long.parseLong(v);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
        getInstance(context).mPreferences.edit().putLong(key, l).commit();
    }
    /**
     * 取Long
     */
    public static long getLong(SharedPreferencesUtils mPreferences, String key) {
        return mPreferences.mPreferences.getLong(key, -1);
    }
    /**
     * 存储String
     */
    public static void putLong(SharedPreferencesUtils mPreferences, String key,
                               long v) {
        mPreferences.mPreferences.edit().putLong(key, v).commit();
    }
}
以上呢就是我在平常的需求中实现的 SharedPreferences的工具类。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值