博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sp存复杂对象
阅读量:6969 次
发布时间:2019-06-27

本文共 1115 字,大约阅读时间需要 3 分钟。

hot3.png

用SharedPreferences存储一些常用的设置信息很方便,但是我们知道SharedPreferences只能存储一些简单的类型

如何用SharedPreferences来存储一些复杂的对象?下面以map为例,看看SharedPreferences 存储复杂对象的方法

如果想用SharedPreferences存取复杂的数据类型,就需要对这些数据进行编码。通常会将数据转换成Base64编码,然后将转换后的数据以字符串存储。

存储:

//将map转换为byte[]  ByteArrayOutputStream toByte = new ByteArrayOutputStream();  ObjectOutputStream oos = new ObjectOutputStream(toByte);  oos.writeObject(map);  //对byte[]进行Base64编码  String payCityMapBase64 = new String(Base64.encode(toByte.toByteArray(), Base64.DEFAULT));  // 存储  editor.putString(KEY_CITY, payCityMapBase64);  editor.commit();

下面是读取

private List
base64Decode(String name,List
list) { if(sp_mine_brand.getString(name, null)!=null){ byte[] base64Bytes = Base64.decode(sp_mine_brand.getString(name, null),Base64.DEFAULT);   ByteArrayInputStream bais = new ByteArrayInputStream(base64Bytes);   ObjectInputStream ois; try { ois = new ObjectInputStream(bais); list = (ArrayList) ois.readObject(); return list; } catch (Exception e) { System.out.println("失败了么"); e.printStackTrace(); }   } return null; }

转载于:https://my.oschina.net/u/1024921/blog/153209

你可能感兴趣的文章
linux学习----日志
查看>>
活动目录的综合应用(二)
查看>>
Java中的静态绑定和动态绑定
查看>>
Java compiler level does not match the version of
查看>>
企业应用架构模式学习(十七):会话状态模式
查看>>
AD组策略的那点事
查看>>
CentOS 7 编译安装LAMP
查看>>
iptables
查看>>
Linux native AIO与eventfd、epoll的结合使用
查看>>
转:图数据库Neo4J的介绍
查看>>
SpringBoot第1小节:.第一个SpringBoot应用和项目属性配置
查看>>
Scrum团队实践——概念篇
查看>>
我的友情链接
查看>>
获取屏幕宽度、浏览器宽度、网页高度,宽度信息
查看>>
我的友情链接
查看>>
我的家庭私有云计划-12
查看>>
CCNP学习笔记20----VRRP(业界标准)
查看>>
linux命令:/etc/fstab配置文档浅谈、mount -a fuser -v
查看>>
Spring Boot 使用Cors (解决跨域问题)
查看>>
Android添加编译过的class文件
查看>>