码迷,mamicode.com
首页 > 其他好文 > 详细

使用SharedPreference 进行对象存储

时间:2016-05-12 14:19:28      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

使用场景

在实际开发中,经常会需要将对象进行存储,通常的想法是使用数据库进存储,但是,在整个项目中只需要对少量数据进行存储时,这时使用数据库就显得有些重。比如登录成功后的用户信息,在整个项目中只有这一条数据需要存储,如果因为这一条数据的存储就使用数据库进行存储,是否显得有些大材小用了,其实,使用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 工具类

使用SharedPreference 进行对象存储

标签:

原文地址:http://blog.csdn.net/u013501637/article/details/51361591

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!