SharedPreferences保存工具类

SharedPreferences保存工具类

日常开发中,经常需要SharedPreferences保存数据到本地,以方便本地使用,保存的数据大致有Int ,String、boolean、对象等
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.util.Base64;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

/**
 * ***********************************************************************************************************************************
 * 修改日期                         修改人             任务名称                         功能或Bug描述
 * 2018/9/7 18:49                   MUZI102                                             SharedPreferences工具类
 * ***********************************************************************************************************************************
 */
public class PrefShare {
    private SharedPreferences preferences;
    private Context context;
    private static PrefShare prefShare;

    private PrefShare(Context context) {
        this.context = context;
        preferences = PreferenceManager
                .getDefaultSharedPreferences(this.context);
    }

    public static PrefShare getInstance(Context context) {
        if (prefShare == null) {
            synchronized (PrefShare.class) {
                if (prefShare == null)
                    prefShare = new PrefShare(context);
            }
        }
        return prefShare;
    }

    //保存String
    private synchronized boolean saveString(String key, String value) {
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString(key, value);
        return editor.commit();
    }

    //取出String
    private synchronized String getString(String key) {
        return preferences.getString(key, null);
    }

    //保存Int
    private synchronized boolean saveInt(String key, int value) {
        SharedPreferences.Editor editor = preferences.edit();
        editor.putInt(key, value);
        return editor.commit();
    }

    //取出Int
    private synchronized int getInt(String key) {
        return preferences.getInt(key, 0);
    }

    //保存Boolean
    private synchronized boolean putIsBoolean(Context context, String key, boolean value) {
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean(key, value);
        return editor.commit();
    }

    //取出boolean
    private synchronized boolean getBoolean(Context context, String key, boolean defValue) {
        SharedPreferences.Editor editor = preferences.edit();
        return preferences.getBoolean(key, defValue);
    }

    //保存Double
    private synchronized boolean saveDouble(String key, double value) {
        return saveString(key, String.valueOf(value));
    }

    private synchronized double getDouble(String key) {
        String value = getString(key);
        if (null != value) {
            return Double.valueOf(value);
        } else {
            return 0;
        }
    }

    //保存序列话对象
    private synchronized boolean saveSerializableObject(String key, Object object) {
        if (object instanceof Serializable) {
            SharedPreferences.Editor editor = preferences.edit();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            try {
                ObjectOutputStream oos = new ObjectOutputStream(baos);
                oos.writeObject(object);//把对象写到流里
                String temp = new String(Base64.encode(baos.toByteArray(), Base64.DEFAULT));
                editor.putString(key, temp);
                return editor.commit();
            } catch (IOException e) {
                e.printStackTrace();
                return false;
            }
        } else {
            return false;
        }
    }

    /**
     * 使用案例
     * private TextView textView1;
     * textView1 = findView(R.id.textView1);
     *
     * @param key
     * @param <T>
     * @return
     */
    private synchronized <T> T getSerializableObject(String key) {

        String temp = preferences.getString(key, "");
        ByteArrayInputStream bais = new ByteArrayInputStream(Base64.decode(temp.getBytes(), Base64.DEFAULT));
        T o = null;
        try {
            ObjectInputStream ois = new ObjectInputStream(bais);
            o = (T) ois.readObject();
        } catch (IOException e) {

        } catch (ClassNotFoundException e1) {

        }
        return o;
    }


/**
 * 使用代码
 * ***********************************************************************************************************************************
 */
    /**
     * 保存用户名
     *
     * @param username
     * @return
     */
    public boolean saveUserName(String username) {
        return saveString("username", username);
    }

    /**
     * 获取用户名
     *
     * @return
     */
    public String getUserName() {
        return getString("username");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子102

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值