使用SharedPreference 进行对象存储

来源:互联网 发布:淘宝外星人代购 编辑:程序博客网 时间:2024/05/22 00:40

使用场景

在实际开发中,经常会需要将对象进行存储,通常的想法是使用数据库进存储,但是,在整个项目中只需要对少量数据进行存储时,这时使用数据库就显得有些重。比如登录成功后的用户信息,在整个项目中只有这一条数据需要存储,如果因为这一条数据的存储就使用数据库进行存储,是否显得有些大材小用了,其实,使用SharedPreference 对用户登录信息进行存储,也不为是一种不错的选择,如果此时考虑写入和读取效率问题,可以对数在内存中做一下数据持久化处理。

注意

存入的对象一定要进行序列化(Serializable),否则无法进行存储
比如存入User对象,就要对User 进行序列化操作。
示例代码如下:

public class User implements Serializable{    private String name;    private String addr;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAddr() {        return addr;    }    public void setAddr(String addr) {        this.addr = addr;    }    @Override    public String toString() {        return "UserInfo{" +                "name='" + name + '\'' +                ", addr='" + addr + '\'' +                '}';    }}

实现代码

1.对象存储

    /**     * 向SharedPreference 中保存信息<br>     *     * @param key     *            类型String Key     * @param obj     *            类型object     */    public void saveToShared(String key, Object obj) {        ByteArrayOutputStream out = new ByteArrayOutputStream();        try {            ObjectOutputStream oout = new ObjectOutputStream(out);            oout.writeObject(obj);            String value = new String(Base64.encode(out.toByteArray()));            Editor editor = sharedPreferences.edit();            editor.putString(key,value);            editor.commit();        } catch (IOException e) {            e.printStackTrace();        }    }
  1. 对象读取
    /**     * 从SharedPreference 中读取保存的信息<br>     *     * @param key     *            读取保存信息的Key     * @return 返回读取的信息<br>     *         类型为 T <br>     *         Value 为读取内容,类型为String,如果Key未找到对应的数据,则返回null     */    public Object queryForSharedToObject(String key) {        String value = sharedPreferences.getString(key, null);        if(value != null){            byte[] valueBytes = Base64.decode(value);            ByteArrayInputStream bin = new ByteArrayInputStream(valueBytes);            try {                ObjectInputStream oin = new ObjectInputStream(bin);                return oin.readObject();            } catch (Exception e) {                return null;            }        }        return null;    }

封装SharedPreference 工具类下载地址:SharedPreference 工具类

0 0