android使用SharedPreferences实现基本信息存储工具类

1.在app开发中经常会用到临时存放用户信息的时候,我们一般会用到SharedPreferences,下面给出我经常用的工具类:

SharedData
package com.antbyte.video.utils.data;

import android.content.Context;
import android.content.SharedPreferences;


import com.antbyte.video.MyApp;
import com.antbyte.video.constant.Constant;

import java.util.Map;

/**
 * Created by yangjianli on 2017/8/29.
 */

public class SharedData {

    private SharedPreferences mKV;
    private SharedPreferences.Editor mEditor;
    private final static String SHARED_FILE_NAME= Constant.APP_SHARED_FILE_NAME;   //共享的文件名称

    private static SharedData sharedData;
    public static SharedData getInstance(){
        if(sharedData == null){
            sharedData = new SharedData(MyApp.mApp);
        }
        return sharedData;
    }

    /**
     * 构造方法。
     *
     * @param context
     */
    private SharedData(Context context) {
        mKV = context.getSharedPreferences(SHARED_FILE_NAME, Context.MODE_PRIVATE);
        mEditor = mKV.edit();
    }


    /**
     * 构造方法。
     *
     * @param context
     * @param kvName
     *            键值表名称。
     * @param mode
     *            打开的模式。值为Context.MODE_APPEND, Context.MODE_PRIVATE,
     *            Context.WORLD_READABLE, Context.WORLD_WRITEABLE.
     */
    private SharedData(Context context, String kvName, int mode) {
        mKV = context.getSharedPreferences(kvName, mode);
        mEditor = mKV.edit();
    }


    /**
     * 获取保存着的boolean对象。
     *
     * @param key
     *            键名
     * @param defValue
     *            当不存在时返回的默认值。
     * @return 返回获取到的值,当不存在时返回默认值。
     */
    public boolean getBoolean(String key, boolean defValue) {
        return mKV.getBoolean(key, defValue);
    }

    /**
     * 获取保存着的int对象。
     *
     * @param key
     *            键名
     * @param defValue
     *            当不存在时返回的默认值。
     * @return 返回获取到的值,当不存在时返回默认值。
     */
    public int getInt(String key, int defValue) {
        return mKV.getInt(key, defValue);
    }

    /**
     * 获取保存着的long对象。
     *
     * @param key
     *            键名
     * @param defValue
     *            当不存在时返回的默认值。
     * @return 返回获取到的值,当不存在时返回默认值。
     */
    public long getLong(String key, long defValue) {
        return mKV.getLong(key, defValue);
    }

    /**
     * 获取保存着的float对象。
     *
     * @param key
     *            键名
     * @param defValue
     *            当不存在时返回的默认值。
     * @return 返回获取到的值,当不存在时返回默认值。
     */
    public float getFloat(String key, float defValue) {
        return mKV.getFloat(key, defValue);
    }

    /**
     * 获取保存着的String对象。
     *
     * @param key
     *            键名
     * @param defValue
     *            当不存在时返回的默认值。
     * @return 返回获取到的值,当不存在时返回默认值。
     */
    public String getString(String key, String defValue) {
        return mKV.getString(key, defValue);
    }

    /**
     * 获取所有键值对。
     *
     * @return 获取到的所胡键值对。
     */
    public Map<String, ?> getAll() {
        return mKV.getAll();
    }

    /**
     * 设置一个键值对,它将在{@linkplain #commit()}被调用时保存。<br/>
     * 注意:当保存的value不是boolean, byte(会被转换成int保存),int, long, float,
     * String等类型时将调用它的toString()方法进行值的保存。
     *
     * @param key
     *            键名称。
     * @param value
     *            值。
     * @return 引用的KV对象。
     */
    public SharedData put(String key, Object value) {
        if (value instanceof Boolean) {
            mEditor.putBoolean(key, (Boolean) value);
        } else if (value instanceof Integer || value instanceof Byte) {
            mEditor.putInt(key, (Integer) value);
        } else if (value instanceof Long) {
            mEditor.putLong(key, (Long) value);
        } else if (value instanceof Float) {
            mEditor.putFloat(key, (Float) value);
        } else if (value instanceof String) {
            mEditor.putString(key, (String) value);
        } else {
            mEditor.putString(key, value.toString());
        }
        return this;
    }

    /**
     * 移除键值对。
     *
     * @param key
     *            要移除的键名称。
     * @return 引用的KV对象。
     */
    public SharedData remove(String key) {
        mEditor.remove(key);
        return this;
    }

    /**
     * 清除所有键值对。
     *
     * @return 引用的KV对象。
     */
    public SharedData clear() {
        mEditor.clear();
        return this;
    }

    /**
     * 是否包含某个键。
     *
     * @param key
     *            查询的键名称。
     * @return 当且仅当包含该键时返回true, 否则返回false.
     */
    public boolean contains(String key) {
        return mKV.contains(key);
    }

    /**
     * 返回是否提交成功。
     *
     * @return 当且仅当提交成功时返回true, 否则返回false.
     */
    public boolean commit() {
        return mEditor.commit();
    }
}

2.常用到的方法示例

保存一个数据:

SharedData.getInstance().put("key", "value").commit();

获取保存的数据

SharedData.getInstance().getString("key", "");

注意:获取数据的时候类型要和保存时的类型保持一致。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值